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

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

相关推荐
雨中飘荡的记忆35 分钟前
大流量下库存扣减的数据库瓶颈:Redis分片缓存解决方案
java·redis·后端
心之语歌3 小时前
基于注解+拦截器的API动态路由实现方案
java·后端
华仔啊4 小时前
Stream 代码越写越难看?JDFrame 让 Java 逻辑回归优雅
java·后端
ray_liang4 小时前
用六边形架构与整洁架构对比是伪命题?
java·架构
IVEN_4 小时前
只会Python皮毛?深入理解这几点,轻松进阶全栈开发
python·全栈
Ray Liang6 小时前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
AI攻城狮6 小时前
如何给 AI Agent 做"断舍离":OpenClaw Session 自动清理实践
python
Java水解6 小时前
Java 中间件:Dubbo 服务降级(Mock 机制)
java·后端
千寻girling6 小时前
一份不可多得的 《 Python 》语言教程
人工智能·后端·python