Supervisor 是用 Python 编写的轻量级进程管理工具,适用于 Flask API、爬虫等长期运行的后台脚本,支持自动重启、日志记录和开机自启;配置需在 /etc/supervisor/conf.d/ 下新建 .conf 文件,指定 command、directory、user 等参数,修改后执行 supervisorctl reread && update 生效。
Supervisor 是一个用 Python 编写的进程管理工具,适合长期运行的后台脚本(比如 Flask API、爬虫、消息监听器等)。它能自动拉起崩溃的进程、记录日志、支持开机自启,比手动 nohup 或 systemd 更轻量、更易配置。
在 Ubuntu/Debian 上执行:
sudo apt updatesudo apt install supervisorsudo systemctl enable supervisorsudo systemctl start supervisor
安装后配置文件默认位于 /etc/supervisor/conf.d/,每个项目单独建一个 .conf 文件,例如 mybot.conf。
以运行一个 Python 脚本 /opt/myapp/bot.py 为例,创建配置:
sudo nano /etc/supervisor/conf.d/mybot.conf
填入以下内容:
[program:mybot]command=python3 /opt/myapp/bot.pydirectory=/opt/myappuser=www-dataautostart=trueautorestart=truestartretries=3redirect_stderr=truestdout_logfile=/var/log/supervisor/mybot.logstopasgroup=truekillasgroup=true
sudo mkdir -p /var/log/supervisor
每次修改 conf 文件后,必须重新加载配置:
sudo supervisorctl rereadsudo supervisorctl update
常用操作命令:
sudo supervisorctl status:查看所有进程状态sudo supervisorctl start mybot:启动指定进程sudo supervisorctl stop mybot:停止指定进程sudo supervisorctl restart mybot:重启指定进程sudo supervisorctl tail mybot:实时查看日志(类似 tail -f)sudo supervisorctl tail mybot stderr:查看标准错误流如果脚本启动失败但看不到报错,先检查:
sudo chown www-data:www-data /var/log/supervisor/mybot.log)command=/opt/myapp/venv/bin/python /opt/myapp/bot.py)which python3 查看真实路径)sudo supervisorctl status 看状态是否为 FATAL 或 STARTING,再结合 tail 查日志定位Supervisor 本身不支持热重载代码,改完脚本需手动 restart 进程生效。