在 CentOS 上实现 Java 程序开机自启动,常见有几种方式,下面按推荐程度给你讲。
CentOS 7/8/Stream 都使用 systemd,这是最标准的方式。
例如:/opt/app/start.sh
#!/bin/bash
cd /opt/app
/usr/java/jdk1.8.0_201/bin/java -jar myapp.jar >> /opt/app/app.log 2>&1
赋权:
chmod +x /opt/app/start.sh
vi /etc/systemd/system/myapp.service
内容示例:
[Unit]
Description=My Java App
After=network.target
[Service]
Type=simple
User=root
ExecStart=/opt/app/start.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable myapp
systemctl start myapp
查看状态:
systemctl status myapp
✅ 重启服务器会自动启动 Java 程序
适合临时测试。
vi /etc/rc.d/rc.local
添加:
/usr/java/jdk1.8.0_201/bin/java -jar /opt/app/myapp.jar &
赋权:
chmod +x /etc/rc.d/rc.local
⚠️ CentOS 7 以后 rc.local 默认不执行,必须确保可执行。
nohup java -jar /opt/app/myapp.jar &
然后加到 rc.local 或 systemd
✅ Java 要用 绝对路径
✅ 程序依赖目录要 cd 进去
✅ 日志必须重定向,不然开机可能失败
✅ 生产环境建议用 systemd
如果你愿意,可以告诉我:
我可以直接帮你写一份可用的启动文件。