温馨提示×

centos如何守护进程不挂

小樊
41
2026-10-12 01:06:14
栏目: 智能运维

在 CentOS 上让“进程不挂掉、一直运行”常见有几种方式,按推荐程度给你说明。


一、最推荐:用 systemd(CentOS 7+ 标配)

1️⃣ 创建 service 文件

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

2️⃣ 重载并启动

sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl start myprogram
sudo systemctl enable myprogram

✅ 特点:

  • 崩溃自动重启
  • 开机自启
  • 日志统一(journalctl -u myprogram)

二、老方式:nohup(临时/简单脚本)

nohup /opt/myapp/run.sh > /var/log/myapp.log 2>&1 &

退出终端也不会挂。

❌ 缺点:

  • 不会自动重启
  • 服务器重启后不会启动

三、用 supervisor(多进程管理,很常用)

1️⃣ 安装

yum install epel-release -y
yum install supervisor -y

2️⃣ 配置

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

3️⃣ 启动

systemctl enable supervisord
systemctl start supervisord
supervisorctl status

✅ 优点:

  • 自动重启
  • 管理多个进程很方便

四、不推荐但存在:screen / tmux

yum install screen -y
screen -S myapp
/opt/myapp/run.sh
# Ctrl+A D 脱离

❌ 缺点:

  • 崩了不会自动重启
  • 不适合生产环境

五、如何选择?

场景 推荐
生产服务 ✅ systemd
多进程管理 ✅ supervisor
临时跑脚本 nohup
调试 screen/tmux

如果你愿意,可以告诉我:

  • CentOS 版本(6 / 7 / 8)
  • 是什么程序(Java / Python / Go / shell)
  • 是否需要开机自启

我可以直接帮你写一份 可用配置。

0 踩