supervisor 是基于 python 的任务管理工具,用来自动运行各种后台任务 当然你也能直接利用 nohup 命令使任务自动后台运行,但如果要重启任务,每次都自己手动 kill 掉任务进程,这样很繁琐,而且一旦程序错误导致进程退出的话,系统也无法自动重载任务。
1.安装supervisor
yum install supervisor -y
2.通过命令生成supervisor的配置文件
echo_supervisord_conf > /etc/supervisord.conf
3.
/etc/supervisord.conf
配置文件如下
[program:crm]
command==/root/.virtualenvs/MyCRM/bin/uwsgi --ini /home/jason/document/CRM/crm/crm/uwsgi.ini ; 程序启动命令
; 在supervisord启动的时候也自动启动
autostart=true
; 启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒
startsecs=10
; 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启
autorestart=true
; 启动失败自动重试次数,默认是3
startretries=3
; 用哪个用户启动进程,默认是root
user=root
; 进程启动优先级,默认999,值小的优先启动
priority=999
; 把stderr重定向到stdout,默认false
redirect_stderr=true
; stdout 日志文件大小,默认50MB
stdout_logfile_maxbytes=20MB
; stdout 日志文件备份数,默认是10
stdout_logfile_backups = 20
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
stdout_logfile=/home/jason/document/CRM/crm/crm/logs/debug.log
;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
stopasgroup=false
;默认为false,向进程组发送kill信号,包括子进程
killasgroup=false
4.supervisor的相关命令
#启动supervisor
supervisord -c /etc/supervisord.conf
# 进入supervisor后,可以输入以下命令分别对supervisor进行控制
supervisorctl -c /etc/supervisord.conf [start|stop|restart] [program-name|all]
#进入supervisor命令模式
supervisorctl -c /etc/supervisord.conf
# 停止所有的supervisor
stop all
# 查看所有supervisor状态
status
#重启crm项目
restart crm
5.其他命令
#更新supervisord
supervisorctl update
#重新启动配置中的所有程序
supervisorctl reload
#启动某个进程(program_name=你配置中写的程序名称)
supervisorctl start program_name
#查看正在守候的进程
supervisorctl
#停止某一进程
supervisorctl stop program_name
#重启某一进程
supervisorctl restart program_name
#停止全部进程
supervisorctl stop a
注意:
显示用stop停止掉的进程,用reload或者update都不会自动重启
版权声明:本文为weixin_44689630原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。