在 CentOS 上让 Java 程序在后台运行,常见有以下几种方式,按使用场景从简单到规范说明:
&(适合临时运行)java -jar app.jar &
nohup)ps -ef | grep java
⚠️ 不推荐长期运行
nohup + &(最常用)nohup java -jar app.jar > app.log 2>&1 &
说明:
nohup:终端关闭也不退出> app.log:日志输出到文件2>&1:错误日志也写进去&:后台运行查看:
tail -f app.log
停止:
ps -ef | grep app.jar
kill -9 PID
✅ 最常用方式
setsid(完全脱离终端)setsid java -jar app.jar > app.log 2>&1
nohup 更彻底systemd 服务(最规范)vi /etc/systemd/system/app.service
内容示例:
[Unit]
Description=Java App
After=network.target
[Service]
User=root
WorkingDirectory=/opt/app
ExecStart=/usr/bin/java -jar /opt/app/app.jar
SuccessExitStatus=143
Restart=always
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl start app
systemctl enable app
systemctl status app
journalctl -u app -f
✅ 生产环境最佳实践
screen / tmux:可恢复终端supervisor:进程管理工具docker:容器化运行| 场景 | 推荐方式 |
|---|---|
| 临时测试 | java -jar & |
| 一般后台 | nohup java -jar & |
| 生产环境 | systemd |
如果你愿意,我可以帮你写一份完整的 systemd 配置或优化 JVM 参数。