supervisor 学习:
Supervisor 介绍
upervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去即可。也实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可以选择是否自己启动和报警。
pip安装
pip install supervisor
supervisor安装完成后,会生成三个执行程序:supervisortd、supervisorctl、echo_supervisord_conf,分别是supervisor的守护进程服务(用于接收进程管理命令)、客户端(用于和守护进程通信,发送管理进程的指令)、生成初始配置文件程序
备份配置文件:
echo_supervisord_conf > supervisord.conf
配置项目文件配置(exam.ini)
在supervisord.conf引入配置文件exam.ini
启动supervisor服务
sudo supervisord -c /home/yangxing/supervisord.conf
启动项目及常用命令参考如下:
# 注意非root用户,需要加上sudo
# 重启supervisor
supervisorctl reload
# 启动名字为exam的program
supervisorctl start exam
# 停止名字为exam的program
supervisorctl stop exam
# 查看名字为exam的program 状态
supervisorctl status exam
# 查看所有program的状态
supervisorctl status all
# 停止所有program
supervisorctl stop all
# 更新配置
supervisorctl update
注: 启动uwsgi时要注释uwsgi里的如下配置(如果配置了的话),否则supervisorctl启动时会报错
;daemonize = /home/apps/logManage/logs/uwsgi.log
;pidfile = /home/apps/logManage/conf/uwsgi.pid
可以增加 logto配置, 如下所示:
logto = /home/apps/logManage/logs/uwsgi.log
centos7
systemctl命令启动, 编辑配置文件
vim /usr/lib/systemd/system/supervisord.service
内容如下:
[Unit]
Description=Supervisor daemon
[Service]
Type=forking
PIDFile=/home/supervisor/supervisord.pid
ExecStart=/usr/local/python3/bin/supervisord -c /etc/supervisord.conf
ExecStop=/usr/local/python3/bin/supervisorctl shutdown
ExecReload=/usr/local/python3/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
保存后使用如下命令操作supervisord
systemctl stop supervisord
systemctl start supervisord
systemctl status supervisord
systemctl reload supervisord
systemctl restart supervisord