supervisor原理机制

来源:互联网 发布:想开个淘宝店买衣服 编辑:程序博客网 时间:2024/06/05 19:10


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/bashecho 'nnn111---' >> /tmp/isleep 1hecho 'nnnn222----' >> /tmp/i

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

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

# 更新配置文件或重启

supervisorctl update #supervisorctl restart

#获取某进程的pid(当项目dog挂掉时返回0)

supervisorctl pid dog



原创粉丝点击