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

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

相关推荐
卷无止境41 分钟前
写代码这件事,到底该讲究点什么?
后端·python
卷无止境1 小时前
循环复杂度到底在算什么,Python 代码怎么才能写得让人一看就懂
后端·python
lpfasd1231 小时前
MediaCrawler 项目深度分析
chrome·python·chrome devtools
Dxy12393102161 小时前
Python项目打包成EXE完整教程(PyInstaller实战避坑)
开发语言·python
bamb002 小时前
一个项目带你入门AI应用开发01
python
0566462 小时前
Python康复训练——常用标准库
开发语言·python·学习
极光代码工作室2 小时前
基于SpringBoot的课程预约系统
java·springboot·web开发·后端开发
昆曲之源_娄江河畔2 小时前
Python如何安装flask, pymssql
开发语言·python·flask·pymssql
Leighteen3 小时前
`try-finally` 里的 `return`:为什么 `finally` 会悄悄改掉返回值、吞掉异常
java·开发语言
0566463 小时前
Python康复训练——控制流与函数
开发语言·python·学习