Centos7 配置 Supervisor 进程守护

supervisord和supervisorctl:
1、supervisord是supervisor的服务端程序。启动supervisor程序自身,启动supervisor管理的子进程,响应来自clients的请求,重启闪退或异常退出的子进程,把子进程的stderr或stdout记录到日志文件中,生成和处理Event。
2、如果说supervisord是supervisor的服务端程序,那么supervisorctl就是client端程序了。supervisorctl有一个类似shell的命令行界面,我们可以利用它来查看子进程状态,启动/停止/重启子进程,获取running子进程的列表等等。supervisorctl不仅可以连接到本机上的supervisord,还可以连接到远程的supervisord,当然在本机上面是通过UNIX socket连接的,远程是通过TCP socket连接的。supervisorctl和supervisord之间的通信,是通过xml_rpc完成的。
# 安装依赖
yum install -y epel-release
# 安装supervisor
yum install -y supervisor
# 开机自启
systemctl enable supervisord
# 启动
systemctl start supervisord
# 查看状态
systemctl status supervisord
# 查看是否存在supervisord进程
ps -ef|grep supervisord
# 修改配置
vim /etc/supervisord.conf
# 调整增加引入配置文件路径,这个路径放置项目对应的 supervisor 配置文件
# include表示/etc/supervisord.d/文件夹下的所有的.ini文件,都作为启动的应用程序(下文简称“进程”)
# 每一个.ini对应一个应用程序的进程,包括但不限于dotnet应用进程
[include]
files = /etc/supervisord.d/*.ini
# 在supervosprd.d文件夹中创建iot.ini文件并编辑如下:
[program:iot]        #程序名称
command=dotnet iot.dll             #需要执行的命令
#command=java -jar iot.jar
directory=/home/publish     #命令执行的目录
user=root     #用户
priority=999
stopsignal=INT
autostart=true     #是否自启动
autorestart=true     #是否自动重启
startretries=3     #重启失败次数
startsecs=3     #自动重启时间间隔(s)
stderr_logfile=/var/log/iot.err.log  #错误日志文件
stdout_logfile=/var/log/iot.out.log #输出日志文件
# 可启用web界面
vim /etc/supervisord.conf
例如:
[inet_http_server]
port=0.0.0.0:9001
username=admin
password=123456
常用命令:
supervisorctl status              #查看程序状态
supervisorctl stop name       #关闭name程序
supervisorctl start name       #启动name程序
supervisorctl restart name    #重启name程序
supervisorctl reread              #读取有更新的配置文件,不会启动新添加的程序
supervisorctl update             #重启配置文件修改过的程序