supervisor原理机制



【supervisor原理机制】supervisor是所有项目的父进程:
supervisor(pid=29208)会成为主进程,管理各个项目的进程。
当项目A(pid=11531)挂掉,supervisor根据设置autorestart、startretries是否重启。
若要重启,则会重启项目A(pid=13357),
若不重启,则项目A(pid=0)。
当supervisor被kill,管理的项目全部死掉,重启supervisor(pid=14140),管理的项目都重启;


supervisor是如何知道某项目挂掉的?
子进程异常退出的时候,作为父进程肯定是能收到信号的。



我们项目切版本时常见的 kill -HUP `bin/supervisorctl pid A`:
问题:
如果项目A已经挂掉(pid=0), 则变成 kill -HUP 0,会不会有影响???
(这句有点不太理解 All processes in the current process group,实验下来貌似就kill掉自己而已,影响不大)




安装:(详细的请看官网http://supervisord.org/)
pip install supervisor
#生成配置文件
echo_supervisord_conf > supervisord.conf
#启动
supervisord -c supervisord.conf
# 创建项目dog.sh

#!/bin/bash echo 'nnn111---' >> /tmp/i sleep 1h echo 'nnnn222----' >> /tmp/i


# 编辑配置文件,添加项目dog

[program:dog] command=/var/www/py/dog.sh


# 更新配置文件或重启
supervisorctl update #supervisorctl restart
#获取某进程的pid(当项目dog挂掉时返回0)
supervisorctl pid dog



    推荐阅读