1. 根据supervisor配置文件确定被管理进程的配置文件路径
# cat /etc/supervisord/supervisord.conf
[include]
files = conf.d/*.conf
在同级目录下的conf.d文件中,以conf结尾的配置文件将被管理
2. 被管理进程模版
# vi /etc/supervisord/conf.d/tomcat.conf
[program:tomcat] #程序唯一名称
directory=/usr/local/tomcat #程序路径
command=/usr/local/tomcat/bin/catalina.sh run #运行程序的命令
autostart=true #是否在supervisord启动后tomcat也启动
startsecs=10 #启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒
autorestart=true #程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启;意思为如果不是supervisord来关闭的该进程则认为不正当关闭,supervisord会再次把该进程给启动起来,只能使用该supervisorctl来进行关闭、启动、重启操作
startretries=3 #启动失败自动重试次数,默认是3
user=root #用哪个用户启动进程,默认是root
priority=999 #进程启动优先级,默认999,假如Supervisord需要管理多个进程,那么值小的优先启动
stopsignal=INT
redirect_stderr=true #把stderr重定向到stdout标准输出,默认false
stdout_logfile_maxbytes=200MB #stdout标准输出日志文件大小,日志文件大小到200M后则进行切割,切割后的日志文件会标示为catalina.out1,catalina.out2,catalina.out3...,默认50MB
stdout_logfile_backups = 100 #stdout标准输出日志文件备份数,保存100个200MB的日志文件,超过100个后老的将被删除,默认为10保存10个
stdout_logfile=/usr/local/tomcat/logs/catalina.out #标准日志输出位置,如果输出位置不存在则会启动失败
stopasgroup=false #默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
killasgroup=false #默认为false,向进程组发送kill信号,包括子进程
3. 程序管理
supervisorctl status app #进程状态
supervisorctl stop app #停止进程
supervisorctl start app #启动进程
supervisorctl restart app #重启进程
# app替换为all可以控制所有进程
4. supervisord开启起动配置
# vi /usr/lib/systemd/system/supervisord.service
[Unit]
Description=Process Monitoring and Control Daemon
After=rc-local.service nss-user-lookup.target
[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisord/supervisord.conf
[Install]
WantedBy=multi-user.target