1:安装 Supervisor
创建日志文件夹: sudo mkdir -p /var/log/supervisor
执行安装命令:sudo yum install supervisor
2:配置环境变量
sudo vim /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.conf[Install]
WantedBy=multi-user.target
3:supervisor常用配置与添加程序到守护进程
sudo vim /etc/supervisord.conffile=/tmp/supervisor.sock
logfile=/tmp/supervisord.log -- 日志文件,可以看到子程序启动情况
pidfile=/tmp/supervisord.pid
serverurl=unix:///tmp/supervisor.sock ;通过UNIX socket连接supervisord,路径与unix_http_server部分的file一致[include]
files = supervisord.d/*.ini --- 注意配置项目录添加一个程序监控到守护进程内
cd /etc/supervisor.d
添加一个 .ini文件,大体内容如下[program:自己程序名称]
process_name=%(program_name)s_%(process_num)02d
command= 自己脚本启动命令
autostart=true
autorestart=true
user=apache
numprocs=1
startretries=3
redirect_stderr=true
stdout_logfile=日志文件 xxx.log保存后重新载入配置项,执行:
sudo supervisorctl update
启动单个程序:sudo supervisorctl start 自己程序名称:自己程序名称_00
4:操作supervisor
sudo systemctl start supervisord -- 启动Supervisor
sudo systemctl stop supervisord.service -- 停止Supervisor
sudo systemctl restart supervisord.service -- 重启Supervisor
sudo supervisorctl stop groupworker -- 重启所有属于名为 groupworker 这个分组的进程(start,restart 同理)。
sudo supervisorctl stop all -- 停止全部进程,注:start、restart、stop 都不会载入最新的配置文件。
sudo supervisorctl reload -- 载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程。
sudo supervisorctl update -- 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启
注意:以上操作是针对整个守护进程,如果里面有多个子程序都会收到影响查看当前守护进程下,所有的子程序状态[develop@VM_221_0_centos tmp]$ sudo supervisorctl status
test:test_00 RUNNING pid 4100, uptime 1:34:52第一列:程序名称每个配置文件内的program:xxxxx
第二列:RUNNING 脚本状态
第三列:pid 脚本pid
第四列:uptime
5:操作守护进程里单个程序
sudo supervisorctl stop test:test_00 # 停止
sudo supervisorctl start test:test_00 # 启动
sudo supervisorctl restart test:test_00 #重启某个进程