supervisor 管理程序异常崩溃 自动启动

安装

  1. 安装配置:
安装: yum install supervisor -y
默认配置文件:cat /etc/supervisord.conf 
配置路径: /etc/supervisord.d
默认文件结尾: ini  

配置案例

  1. 配置nginx 启动案例:cat /etc/supervisord.d/supervisor_nginx.ini
# cat /etc/supervisord.d/supervisor_nginx.ini 

[program:supervisor_nginx]
command=/usr/sbin/nginx -p /etc/nginx/
;程序启动命令
directory=/etc/nginx/
; 执行命令的路径
autostart=true
; 在supervisord启动的时候也自动启动
startsecs=10
; 启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒
autorestart=true
; 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启
startretries=60
; 启动失败自动重试次数,默认是3
user=root
; 用哪个用户启动进程,默认是root
priority=999 
; 进程启动优先级,默认999,值小的优先启动
redirect_stderr=true
; 把stderr重定向到stdout,默认false
stdout_logfile_maxbytes=50MB  
; stdout 日志文件大小,默认50MB
stdout_logfile_backups = 10   
; stdout 日志文件备份数,默认是10
;stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
stdout_logfile=/var/log/supervisor/supervisor_nginx.log
stderr_logfile=/var/log/supervisor/supervisor_nginx.log
loglevel=info  
;日志的级别
stopasgroup=false     
;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
killasgroup=false     
;默认为false,向进程组发送kill信号,包括子进程
  1. 主程序 启动
~# supervisord -c /etc/supervisord.conf
  1. 控制进程 supervisorctl 需要确定:程序前台运行,才能获取 PID
# supervisorctl status supervisor_nginx
supervisor_nginx                 RUNNING   pid 9460, uptime 0:37:29

4.supervisorctl 客户端操作

supervisorctl stop supervisor_nginx
supervisorctl start supervisor_nginx
supervisorctl restart supervisor_nginx
supervisorctl reread    # 加载配置
supervisorctl update

注意:

### 问题:
command中指定的进程已经起来,但supervisor还不断重启
问题描述:command中启动方式为后台启动,导致识别不到pid,然后不断重启,这里使用的是elasticsearch,command指定的是$path/bin/elasticsearch -d
解决办法:supervisor无法检测后台启动进程的pid,而supervisor本身就是后台启动守护进程,因此不用担心这个
nginx 前台启动:
	daemon off;
posted @ 2022-02-11 10:29  叨客厨子  阅读(897)  评论(0编辑  收藏  举报