在 CentOS 上让“进程不挂掉、一直运行”常见有几种方式,按推荐程度给你说明。
sudo vi /etc/systemd/system/myprogram.service
示例(假设是 /opt/myapp/run.sh):
[Unit]
Description=My Program
After=network.target
[Service]
ExecStart=/opt/myapp/run.sh
Restart=always
User=appuser
WorkingDirectory=/opt/myapp
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl start myprogram
sudo systemctl enable myprogram
✅ 特点:
journalctl -u myprogram)nohup /opt/myapp/run.sh > /var/log/myapp.log 2>&1 &
退出终端也不会挂。
❌ 缺点:
yum install epel-release -y
yum install supervisor -y
vi /etc/supervisord.d/myapp.ini
[program:myapp]
command=/opt/myapp/run.sh
autostart=true
autorestart=true
user=appuser
stdout_logfile=/var/log/myapp.log
systemctl enable supervisord
systemctl start supervisord
supervisorctl status
✅ 优点:
yum install screen -y
screen -S myapp
/opt/myapp/run.sh
# Ctrl+A D 脱离
❌ 缺点:
| 场景 | 推荐 |
|---|---|
| 生产服务 | ✅ systemd |
| 多进程管理 | ✅ supervisor |
| 临时跑脚本 | nohup |
| 调试 | screen/tmux |
如果你愿意,可以告诉我:
我可以直接帮你写一份 可用配置。