nohup java -jar 文件名

在 Linux/Unix 系统中,nohup java -jar 是常用的后台启动 Java 应用的命令,其标准格式通常为 nohup java -jar your-app.jar > nohup.log 2>&1 &。下面详细解析其各部分及操作方法和注意事项:

命令各部分详解

  • nohup:该命令用于忽略挂起信号(SIGHUP),当用户退出终端或者终端被关闭时,正在运行的程序不会受到影响而继续在后台运行。
  • java -jar your-app.jar :这是执行 Java 应用程序的核心部分。java -jar 是 Java 提供的用于运行可执行 JAR 文件的命令,your-app.jar 需要替换为实际要运行的 JAR 文件的名称。
  • > nohup.log :这是输出重定向操作。它将命令的标准输出(stdout)重定向到指定的 nohup.log 文件中。也就是说,程序运行过程中产生的正常输出信息不会显示在终端屏幕上,而是被写入到 nohup.log 文件里。如果不指定文件名,默认会在当前目录创建 nohup.out 文件。若当前目录的 nohup.out 文件不可写,输出会重定向到 $HOME/nohup.out 文件中。若没有文件能创建或打开以用于追加,那么该命令不可调用 。
  • 2>&1 :这是将标准错误输出(stderr)重定向到标准输出(stdout),也就是将程序运行过程中产生的错误信息也一并写入到 nohup.log 文件中。
  • &:该符号表示将命令放到后台执行,这样在执行该命令后,终端可以继续接受并执行其他命令,不会被当前的 Java 程序阻塞。

操作示例

假设要在后台启动一个名为 myapp.jar 的 Java 应用,并将输出信息保存到 myapp.log 文件中,可以使用以下命令:

bash 复制代码
nohup java -jar myapp.jar > myapp.log 2>&1 &

执行该命令后,程序将在后台启动运行,输出信息会被记录到 myapp.log 文件中。

注意事项

  • 文件路径 :确保 your-app.jar 文件的路径正确。如果 JAR 文件不在当前工作目录下,需要使用绝对路径或相对路径来指定其位置。
  • 文件权限 :要保证当前用户对指定的输出文件(如 nohup.log)有写入权限,否则会出现输出重定向失败的问题。如果没有权限,可以使用 chmod 命令修改文件权限。
  • 日志查看 :可以使用 tail -f nohup.log 命令实时查看程序的输出日志,以便监控程序的运行状态。
  • 进程管理 :使用 ps -ef | grep java 命令可以查看当前系统中正在运行的 Java 进程,通过 kill 命令可以终止指定的 Java 进程。

以服务形式管理

另外,还可以将该 Java 程序以服务的形式进行管理,创建一个以 "服务名.service" 格式命名的文件,文件内容参考如下 :

plaintext 复制代码
[Unit]
Description: 描述服务
After: 描述服务类别

[Service]
Type=forking
ExecStart=/绝对路径/java -jar /绝对路径/your-app.jar > /绝对路径/nohup.log 2>&1
ExecReload=/绝对路径/重启脚本路径
ExecStop=/绝对路径/停止脚本路径
PrivateTmp=true

[Install]
WantedBy=multi-user.target

注意启动、重启、停止命令全部要求使用绝对路径,因为需要找到该服务对应的启动、重启、停止脚本。

相关推荐
X56615 小时前
如何在 Laravel 中正确保存嵌套动态表单数据(主服务与子服务)
jvm·数据库·python
FQNmxDG4S5 小时前
Java多线程编程:Thread与Runnable的并发控制
java·开发语言
ZhengEnCi5 小时前
03ab-PyTorch安装教程 📚
python
狐狐生风6 小时前
LangChain 向量存储:Chroma、FAISS
人工智能·python·学习·langchain·faiss·agentai
虹科网络安全6 小时前
艾体宝干货|数据复制详解:类型、原理与适用场景
java·开发语言·数据库
狐狐生风6 小时前
LangChain RAG 基础
人工智能·python·学习·langchain·rag·agentai
axng pmje7 小时前
Java语法进阶
java·开发语言·jvm
rKWP8gKv77 小时前
Java微服务性能监控:Prometheus与Grafana集成方案
java·微服务·prometheus
老前端的功夫7 小时前
【Java从入门到入土】28:Stream API:告别for循环的新时代
java·开发语言·python
qq_435287927 小时前
第9章 夸父逐日与后羿射日:死循环与进程终止?十个太阳同时值班的并行冲突
java·开发语言·git·死循环·进程终止·并行冲突·夸父逐日