linux进程自动重启首选systemd(现代发行版),其次supervisor(多进程/老旧系统),最后shell脚本+crontab(临时验证);三者均需配合日志轮转与健康检查。

Linux 进程自动重启的核心目标是:进程意外退出后能被及时捕获并拉起,保障服务持续可用。关键不在于“怎么让它重启”,而在于“谁来监控、何时重启、如何避免雪崩”。主流可靠方案有三种,按推荐度和适用场景排序如下:
systemd 服务管理(推荐用于现代发行版)
这是当前最主流、最稳定的方式,适用于 CentOS 7+/Ubuntu 16.04+ 等使用 systemd 的系统。它原生支持依赖管理、日志集成、重启策略和资源限制。
- 创建服务文件,例如 /etc/systemd/system/myapp.service:
[Unit]
Description=My Web Service
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/myapp
User=www-data
Restart=always
RestartSec=5
StartLimitInterval=0
[Install]
WantedBy=multi-user.target
- 关键参数说明:
• Restart=always:除主动 stop 外,崩溃、信号终止、退出码非 0 都触发重启
• RestartSec=5:每次重启前等待 5 秒,避免高频闪退打满系统
• StartLimitInterval=0:禁用启动频率限制(默认 10 秒内最多 5 次,超限则暂停)
• Type=simple:适用于前台运行的程序;若程序 daemonize 自身,改用 Type=forking - 启用并启动:
sudo systemctl daemon-reload
sudo systemctl enable --now myapp.service
Supervisor 进程守护(适合多进程或老旧系统)
当系统未使用 systemd(如某些嵌入式环境),或需集中管理多个异构应用(Python/Node.js/Java 混合部署)时,Supervisor 是成熟选择。它提供命令行控制(supervisorctl)和简易 Web 界面。
安装说明重要提醒:程序不支持二级目录安装,请使用一级目录或二级目录绑定!第一步,确定你的服务器支持PHP+mysql。第二步,确定你的服务器开启了gd库。第三步,将upload文件内的文件上传到网站的根目录第四步,访问你的域名+ /install/index.html进行安装,linux系统访问你的域名+ /Install/index.html第五步,按照安装程序步骤进行安装配置第六步,安装完毕后
- 安装与配置(以 Debian/Ubuntu 为例):
sudo apt install supervisor
新建 /etc/supervisor/conf.d/myapp.conf:
[program:myapp]
command=/usr/local/bin/myapp
autostart=true
autorestart=true
startretries=3
user=www-data
redirect_stderr=true
stdout_logfile=/var/log/myapp.log
- 生效配置:
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start myapp - 优势:自带日志轮转、状态查询直观(supervisorctl status)、支持组管理,适合运维统一维护。
轻量级 Shell 脚本 + crontab(适合临时验证或极简场景)
无需额外安装,适合快速验证或资源受限环境。但注意:它不具备进程父子关系管理,也不记录详细退出原因,仅作兜底补充。
- 编写监控脚本 /opt/bin/monitor-myapp.sh:
#!/bin/sh
APP_NAME="myapp"
if ! pgrep -f "$APP_NAME" > /dev/null; then
echo "$(date): $APP_NAME not running, restarting..." >> /var/log/myapp-monitor.log
/usr/local/bin/myapp &
fi
- 赋予执行权限:chmod +x /opt/bin/monitor-myapp.sh
- 每分钟检查一次:
crontab -e,添加一行:
*/1 * * * * /opt/bin/monitor-myapp.sh - 提醒:避免脚本本身出错导致无限 fork;建议加简单锁机制(如 touch /tmp/myapp.lock)或用 flock 防重入。
实际选型时,优先用 systemd;已有 Supervisor 生态可延续使用;脚本方案仅建议用于测试环境或过渡期。三者都可配合日志轮转(logrotate)和服务健康检查(如 curl -f http://localhost:8080/health)进一步增强可靠性。









