supervisor 安装使用

Supervisor是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。

安装supervisor

通过yum安装:

1
2
[root@i-x676awuk ~]# yum install supervisor  
[root@i-x676awuk ~]# systemctl enable supervisord.service # 设置开机自启

通过pip安装

1
2
[root@i-x676awuk ~]# pip install supervisor
[root@i-x676awuk ~]# systemctl enable supervisord.service # 设置开机自启

supervisor安装完成后会生成三个执行程序:
supervisortd:supervisor的守护进程服务(用于接收进程管理命令)
supervisorctl:客户端(用于和守护进程通信,发送管理进程的指令)
echo_supervisord_conf:生成初始配置文件程序

配置supervisor

运行echo_supervisord_conf程序生成supervisor的初始化配置文件:

1
2
[root@i-x676awuk ~]# mkdir /etc/supervisor
[root@i-x676awuk ~]# echo_supervisord_conf > /etc/supervisor/supervisord.conf

注:运行supervisord服务的时候,需要指定supervisor配置文件,如果没有显示指定,默认在以下目录查找:

1
2
3
4
5
6
7
8
$CWD/supervisord.conf
$CWD/etc/supervisord.conf
/etc/supervisord.conf
/etc/supervisor/supervisord.conf (since Supervisor 3.3.0)
../etc/supervisord.conf (Relative to the executable)
../supervisord.conf (Relative to the executable)

$CWD表示运行supervisord程序的目录。

配置文件参数说明

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@vm192-168-0-5 ~]# cat /etc/supervisord.d/backend_dev.conf

[program:smartant_backend]
command=/opt/virtual_env/backend_env/bin/python /data/smartant_backend_shangqi_v2/runserver start all
stdout_logfile=/data/logs/smartant_backend.log
user=root
autostart=true
autorestart=true
startsecs=60
stopasgroup=true
ikillasgroup=true
startretries=1
redirect_stderr=true

https://blog.csdn.net/xyang81/article/details/51555473
https://www.cnblogs.com/xuezhigu/p/7660203.html(详细)

配置管理进程

进程管理配置参数,不建议全都写在supervisord.conf文件中,应该每个进程写一个配置文件放在include指定的目录下包含进supervisord.conf文件中。

1> 创建/etc/supervisor/config.d目录,用于存放进程管理的配置文件
2> 修改/etc/supervisor/supervisord.conf中的include参数,将/etc/supervisor/conf.d目录添加到include中

suppervisor 常用操作

查看、启动、停止、重启supervisor进程

启动Supervisor服务

1
supervisord -c /etc/supervisor/supervisord.conf

停止Supervisor服务

1
supervisorctl stop supervisord.service

重新启动配置中的所有程序

1
supervisorctl reload

更新配置后必须执行更新命令才生效

1
supervisorctl update

查看supervisor进程

1
supervisorctl status

启动某个supervisor进程

1
supervisorctl start xxxx

停止某个supervisor进程

1
sudo supervisorctl stop xxxx

停止所有supervisor进程

1
sudo supervisorctl stop all

重启某个supervisor进程

1
sudo supervisorctl restart xxxx
-------------本文结束感谢您的阅读-------------