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
推荐阅读
- 做一件事情的基本原理是什么()
- 【读书笔记】贝叶斯原理
- SG平滑轨迹算法的原理和实现
- 深入理解|深入理解 Android 9.0 Crash 机制(二)
- “写作宝典”《金字塔原理》之读书笔记
- Spring|Spring 框架之 AOP 原理剖析已经出炉!!!预定的童鞋可以识别下发二维码去看了
- Spring|Spring Boot 自动配置的原理、核心注解以及利用自动配置实现了自定义 Starter 组件
- Vue源码分析—响应式原理(二)
- MYSQL主从同步的实现
- (1)redis集群原理及搭建与使用(1)