Supervisor是一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。
提供的高可用场景,当你的程序出现异常,例如core/内存溢出等,导致服务进程被杀死,这个时候supervisort监听到进程终止后,会自动将它重新拉起。
1、通过apt-get直接安装
apt-get install supervisor
2、pip安装
pip install supervisor
3、easy_install安装
easy_install supervisor
supervisor是一个C/S架构的工具。安装完成后,会生成三个执行程序:
1)supervisortd:守护进程服务(用于接收进程管理命令)
2)supervisorctl:客户端(用于和守护进程通信,发送管理进程的指令)
3)echo_supervisord_conf:生成初始配置文件程序
运行echo_supervisord_conf命令输出默认的配置项,可以如下操作将默认配置保存到文件中
echo_supervisord_conf > supervisord.conf
vim 打开编辑supervisord.conf文件,修改
- [include]
- files = relative/directory/*.ini
为
- [include]
- files = /etc/supervisor/*.conf
include选项指明包含的其他配置文件。
将编辑后的supervisord.conf文件复制到/etc/目录下
sudo cp supervisord.conf /etc/
然后在/etc目录下新建子目录supervisor(与配置文件里的选项相同),并在/etc/supervisor/中新建需要管理的配置文件xxx.conf。
- [program:test_one]
- command=python3 /home/dgw/Desktop/test/text.txt; 被监控的进程路径
- priority=1 ; 数字越高,优先级越高
- numprocs=1 ; 启动几个进程
- autostart=true ; 随着supervisord的启动而启动
- autorestart=true ; 自动重启
- startretries=10 ; 启动失败时的最多重试次数
- exitcodes=0 ; 正常退出代码
- stopsignal=KILL ; 用来杀死进程的信号
- stopwaitsecs=10 ; 发送SIGKILL前的等待时间
- redirect_stderr=true ; 重定向stderr到stdout
-
-
- [program:test_two]
- command=python3 /home/dgw/Desktop/test/text2.txt; 被监控的进程路径
- priority=1 ; 数字越高,优先级越高
- numprocs=1 ; 启动几个进程
- autostart=true ; 随着supervisord的启动而启动
- autorestart=true ; 自动重启
- startretries=10 ; 启动失败时的最多重试次数
- exitcodes=0 ; 正常退出代码
- stopsignal=KILL ; 用来杀死进程的信号
- stopwaitsecs=10 ; 发送SIGKILL前的等待时间
- redirect_stderr=true ; 重定向stderr到stdout
注意:要对上面编辑的文件添加可操作权限:chmod +x xxx.conf
supervisord -c /etc/supervisord.conf
查看 supervisord 是否在运行:
ps aux | grep supervisord
利用supervisorctl来管理supervisor。
- supervisorctl
-
- > status # 查看程序状态
- > start apscheduler # 启动 apscheduler 单一程序
- > stop toutiao:* # 关闭 toutiao组 程序
- > start toutiao:* # 启动 toutiao组 程序
- > restart toutiao:* # 重启 toutiao组 程序
- > update # 重启配置文件修改过的程序
执行status命令时,显示如下信息说明程序运行正常:
- supervisor> status
- toutiao:toutiao-app RUNNING pid 32091, uptime 00:00:02
此时没有是说明没有权限,在命令前面加上sudo就可以啦!
异常报错参考链接: