参考
官网 [http://supervisord.org](http://supervisord.org)<br /> [https://www.cnblogs.com/xueweihan/p/6195824.html](https://www.cnblogs.com/xueweihan/p/6195824.html)<br /> [http://liyangliang.me/posts/2015/06/using-supervisor/](http://liyangliang.me/posts/2015/06/using-supervisor/)<br /> [https://www.jianshu.com/p/0b9054b33db3](https://www.jianshu.com/p/0b9054b33db3)
定义
Supervisor 是一个 C/S 模型的程序,supervisord 是 server 端,supervisorctl 的shell、和网页端 是 client 端
安装
apt-get install supervisoryum install supervisor
查看服务
systemctl status supervisord○ supervisord.service - Process Monitoring and Control DaemonLoaded: loaded (/usr/lib/systemd/system/supervisord.service; disabled; vendor preset: disabled)Active: inactive (dead)Docs: http://supervisord.org
配置
配置文件
配置文件 /etc/supervisord.conf配置文件夹 /etc/supervisor.d
子进程配置
子进程配置文件路径 /etc/supervisor.d
新建文件programe.ini
输入以下内容
[program:father]directory=/run/media/duxin/G/work_space/python_project/processcommand=python father.pyautorestart=trueautostart=trueredirect_stderr=trueuser=duxinstdout_logfile_maxbytes=50MBstdout_logfile_backups=5stdout_capture_maxbytes=1MBstdout_events_enabled=falseloglevel=warn
一个进程就配置好了
另一个多组子进程的配置例子
[program:food_crm]directory=/run/media/duxin/G/eartip/code_test/FoodCrmcommand=/home/duxin/.local/share/virtualenvs/FoodCrm-28Lm7e7d/bin/python manage.py runserver 0:99%(process_num)02dprocess_name=%(program_name)s_%(process_num)02dnumprocs=4autorestart=trueautostart=truestopasgroup=truekillasgroup=trueredirect_stderr=trueuser=duxinstdout_logfile_maxbytes=50MBstdout_logfile_backups=5stdout_capture_maxbytes=1MBstdout_events_enabled=falseloglevel=warn
可以看到多了process_name、numprocs两个参数
stopasgroup、killasgroup 保证启停的时候把带着子进程一起起停
添加 web 支持
在/etc/supervisord.conf配置文件中将下面几行前面的分号去掉,修改一下数据保存退出(用户名与密码自己定义)
[inet_http_server] # inet (TCP) server disabled by defaultport=0.0.0.0:9001 # ip_address:port specifier, *:port for all ifaceusername=user # default is no username (open server)password=123 # default is no password (open server)
重启
systemctl trstart supervisord
效果
http://localhost:9001/
supervisorctl命令
输入命令 supervisorctl 进入 supervisorctl 的 shell 交互界面
help # 查看帮助
default commands (type help <topic>):=====================================add exit open reload restart start tailavail fg pid remove shutdown status updateclear maintail quit reread signal stop version
status # 查看程序状态
fastapi_demo:fastapi_demo_00 RUNNING pid 227285, uptime 23:24:55fastapi_demo:fastapi_demo_01 RUNNING pid 227286, uptime 23:24:55fastapi_demo:fastapi_demo_02 RUNNING pid 227287, uptime 23:24:55fastapi_demo:fastapi_demo_03 RUNNING pid 227288, uptime 23:24:55father RUNNING pid 227289, uptime 23:24:55food_crm:food_crm_00 RUNNING pid 227290, uptime 23:24:55food_crm:food_crm_01 RUNNING pid 227291, uptime 23:24:55food_crm:food_crm_02 RUNNING pid 227292, uptime 23:24:55food_crm:food_crm_03 RUNNING pid 227293, uptime 23:24:55
stop program_name # 关闭 指定的程序<br /> start program_name # 启动 指定的程序<br /> restart program_name # 重启 指定的程序<br /> tail -f program_name # 查看 该程序的日志<br /> update # 重启配置文件修改过的程序(修改了配置,通过这个命令加载新的配置)<br /> reload //重新启动配置中的所有程序<br /> restart fastapi_demo:* 可以重启 fastapi_demo 组的所有进程
也可以不进入supervisorctl的shell,直接在终端执行命令操作:
supervisorctl status
supervisorctl update
…
