supervisor 是 linux 系统中用于实现进程自动重启的有效工具,其配置步骤包括:1. 安装 supervisor 并设置开机启动;2. 在 /etc/supervisor/conf.d/ 目录下创建配置文件,定义 command、autostart、autorestart 及日志路径等关键参数;3. 使用 supervisorctl 命令重载配置并管理进程;4. 注意权限、日志路径、重启次数限制及用户环境等问题以确保配置生效。

Linux系统中,确保关键进程在异常退出后能自动重启,是运维工作中一个常见的需求。Supervisor 是一个用 Python 写的进程管理工具,可以很方便地监控和控制进程。下面介绍如何配置 Supervisor 实现 Linux 进程自动重启。

安装 Supervisor
大多数 Linux 发行版都可以通过包管理器安装 Supervisor。例如:

- Debian/Ubuntu:
sudo apt-get install supervisor - CentOS/RHEL:
sudo yum install supervisor
安装完成后,Supervisor 会以服务形式运行,可以通过 systemctl 控制它,比如 sudo systemctl start supervisord 或 sudo systemctl enable supervisord 设置开机启动。
配置被监控的进程
Supervisor 的配置文件通常位于 /etc/supervisor/conf.d/ 目录下,每个进程可以单独创建一个 .conf 文件。

基本结构如下:
[program:your_program_name] command=/path/to/your/script.sh autostart=true autorestart=true stderr_logfile=/var/log/your_program.err.log stdout_logfile=/var/log/your_program.out.log
其中几个关键参数说明一下:
-
command:要执行的命令或脚本路径。 -
autostart:是否随 Supervisor 自动启动。 -
autorestart:是否在退出时自动重启,设为true才能实现自动重启。 -
stderr_logfile和stdout_logfile:标准错误和标准输出的日志路径,方便排查问题。
你可以根据实际需求添加更多选项,比如设置环境变量、工作目录等。
启动并管理进程
修改完配置后,需要让 Supervisor 重新加载配置:
sudo supervisorctl reread sudo supervisorctl update
然后就可以使用以下命令来管理进程了:
-
supervisorctl start your_program_name:启动某个程序。 -
supervisorctl stop your_program_name:停止某个程序。 -
supervisorctl restart your_program_name:重启某个程序。 -
supervisorctl status:查看所有程序状态。
如果你希望某个进程在配置后立刻运行,可以直接用 start 命令触发。
常见注意事项
- 权限问题:确保 Supervisor 有权限执行你配置的脚本或程序。
- 日志路径存在且可写:如果日志文件路径不存在或者不可写,Supervisor 可能会启动失败。
-
避免无限重启循环:虽然我们希望程序崩溃后能自动重启,但如果程序一启动就出错退出,Supervisor 会不断尝试重启。可以通过
startretries参数限制重试次数。 -
注意用户环境差异:有些脚本依赖当前用户的环境变量,Supervisor 默认是以 root 用户运行的。如需切换用户,可以在配置中加上
user=your_username。
基本上就这些。只要配置得当,Supervisor 能很好地帮你管理进程,并在程序异常退出时自动恢复服务。










