在 CentOS 中后台运行 Java 程序,常见有以下几种方式,按推荐程度从高到低说明:
nohup(最简单、最常用)适合临时或简单场景。
nohup java -jar app.jar > app.log 2>&1 &
说明:
nohup:忽略挂断信号,关闭终端也能运行> app.log:标准输出写入日志2>&1:错误输出也写入日志&:后台运行查看进程:
ps -ef | grep java
停止进程:
kill -9 进程ID
systemd(✅ 推荐,生产环境)CentOS 7+ 推荐方式,可开机自启、自动重启。
vi /etc/systemd/system/myapp.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=on-failure
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl start myapp
systemctl enable myapp
systemctl status myapp
journalctl -u myapp -f
screen(适合交互调试)yum install -y screen
screen -S javaapp
java -jar app.jar
# Ctrl + A + D 退出但保持运行
恢复会话:
screen -r javaapp
setsid(不依赖终端)setsid java -jar app.jar > app.log 2>&1
| 场景 | 推荐方式 |
|---|---|
| 临时测试 | nohup |
| 生产环境 | systemd |
| 调试交互 | screen |
如果你是 CentOS 6,或想配置 JVM 参数 / 多实例,可以告诉我,我给你具体示例。