supervisor 是 linux 下轻量稳定的进程管理工具,支持自动拉起崩溃进程、集中日志和 web 管理;推荐用系统包管理器安装,配置需修改 sock、log、pid 路径并启用 include,子配置置于 /etc/supervisor/conf.d/,最后通过 supervisorctl 管理程序启停与更新。

Supervisor 是 Linux 下轻量、稳定、易上手的进程管理工具,适合托管 Python Web 服务、爬虫、后台任务等长期运行的程序。它不依赖 systemd 或 init,能自动拉起崩溃进程、集中记录日志、支持命令行和 Web 管理界面。
安装方式(按系统选一种)
推荐优先使用系统包管理器,避免权限与路径问题:
-
Ubuntu/Debian:执行
sudo apt update && sudo apt install supervisor -
CentOS/RHEL 7/8/9:先启用 EPEL:
sudo yum install -y epel-release,再安装:sudo yum install -y supervisor(或用dnf) -
通用 Python 环境(如需指定版本或虚拟环境):用 pip:
pip install supervisor,注意需有写入/etc或运行目录的权限
生成并调整主配置文件
安装后默认可能已有配置,但建议手动初始化并修正关键路径(避免日志写入 /tmp 导致丢失):
- 生成基础配置:
echo_supervisord_conf > /etc/supervisor/supervisord.conf - 编辑该文件,重点修改三处:
-
[unix_http_server]段中:file=/var/run/supervisor.sock -
[supervisord]段中:logfile=/var/log/supervisord.log、pidfile=/var/run/supervisord.pid -
[supervisorctl]段中:serverurl=unix:///var/run/supervisor.sock
-
- 在文件末尾添加 include 支持(便于分离管理):
[include]<br>files = /etc/supervisor/conf.d/*.conf
- 创建子配置目录:
sudo mkdir -p /etc/supervisor/conf.d
为具体程序添加托管配置
在 /etc/supervisor/conf.d/ 下新建 .conf 文件,例如 myapp.conf:
- 基本结构示例(以 Python 脚本为例):
[program:mybot]<br>command=python3 /opt/mybot/main.py<br>directory=/opt/mybot<br>user=www-data<br>autostart=true<br>autorestart=true<br>startsecs=3<br>stderr_logfile=/var/log/mybot.err.log<br>stdout_logfile=/var/log/mybot.out.log<br>environment=PATH="/usr/local/bin:/usr/bin"
- 关键项说明:
-
command:必须是完整可执行命令(含解释器和绝对路径) -
user:建议非 root 用户运行,提升安全性 -
autorestart设为true才能实现崩溃自拉起 - 日志路径对应目录需提前创建,如:
sudo mkdir -p /var/log/mybot
-
启动与日常管理
配置完成后,按顺序执行:
- 加载新配置并启动 supervisord:
sudo supervisord -c /etc/supervisor/supervisord.conf - 首次启用后,建议设为开机自启(systemd 系统):
sudo systemctl enable supervisord - 常用管理命令(无需加
-c参数,若配置在默认路径):-
sudo supervisorctl status— 查看所有托管程序状态 -
sudo supervisorctl start mybot— 启动指定程序 -
sudo supervisorctl restart mybot— 重启 -
sudo supervisorctl reread— 重新读取 conf.d 中新增/修改的配置 -
sudo supervisorctl update— 应用新配置(启动新增、重启变更项)
-











