场景:起了多个不同的python服务,不方便统一管理,且存在某些进程莫名其妙死掉的情况,到网上搜了一下,发现可以用supervisor来实现统一管理,
这样只要启动supervisord即可。
参考地址:http://www.supervisord.org/introduction.html
运行环境: mac os x, linux centos7
操作步骤:
1、安装
pip install supervisor
2、编辑配置文件supervisor.conf
自己找一个目录,创建并编辑一个*.conf配置文件(参考默认的supervisor.conf文件内容),主要编辑内容如下:
[program:wordFilter-8882] command=python /Users/pattywgm/Projects/words_filter_server.py --port=8882 autostart=true ; supervisord守护程序启动时自动启动 autorestart=true ; supervisord守护程序重启时自动重启 redirect_stderr=true ; 将stderr重定向到stdout stdout_logfile = /Users/pattywgm/Projects/wordsFilter-8882.log [program:wordFilter-8883] command=python /Users/pattywgm/Projects/words_filter_server.py --port=8883 autostart=true ; supervisord守护程序启动时自动启动 autorestart=true ; supervisord守护程序重启时自动重启 redirect_stderr=true ; 将stderr重定向到stdout stdout_logfile = /Users/pattywgm/Projects/wordsFilter-8883.log
保存后运行:/usr/local/bin/supervisord -c supervisord.conf 启动supervisord,-c用于指定配置文件路径
3、新增待管理的进程
在supercisor.conf文件中加入待管理的进程启动命令,然后运行
/usr/local/bin/supervisorctl reload 即可重新加载配置文件,并按新的配置文件启动进程
4、其他命令
- supervisorctl stop programxxx,停止某一个进程(programxxx),programxxx为[program:wordFilter-8883]里配置的值,这个示例就是wordFilter-8883。
- supervisorctl start programxxx,启动某个进程
- supervisorctl restart programxxx,重启某个进程
- supervisorctl stop all,停止全部进程,注:start、restart、stop都不会载入最新的配置文件。
【推荐】鸿蒙应用开发者激励计划,开发上架应用,现金激励超亿元!
【推荐】园子的不务正业:向创业开发者推荐「楼盘」- 杭州云谷中心
【推荐】2025 HarmonyOS 鸿蒙创新赛正式启动,百万大奖等你挑战!
【推荐】电信天翼云 2025 云上钜惠,爆款云主机2核4G只要1.5折起