centos7默认是systemctl 来管理进程的,安装supervisor后我们可以通过supervisor来帮我们管理进程。
supervisor管理进程,是通过fork/exec的方式将这些被管理的进程当作supervisor的子进程来启动,所以我们只需要将要管理进程的可执行文件的路径添加到supervisor的配置文件中就好了。此时被管理进程被视为supervisor的子进程,若该子进程异常中断,则父进程可以准确的获取子进程异常中断的信息,通过在配置文件中设置autostart=ture,可以实现对异常中断的子进程的自动重启。
第一步我们用yum 下载安装
第二步修改默认启动配置文件(按照默认的配置文件启动会报错)
*
#unix:///var/run/supervisor/supervisor.sock no such file
vim /usr/lib/systemd/system/supervisord.service
[Unit]
Description=Process Monitoring and Control Daemon #对这个服务的描述
after=rc-local.service nss-user-lookup.target syslog.target network.target mysqld.service
#supervisord.service在这些服务之后启动
[Service] #定义如何启动该服务
Type=forking
ExecReload=/usr/bin/kill -s HUP $MAINPID #重启时执行的命令
ExecStop=/usr/bin/kill -s QUIT $MAINPID #停止服务时执行的命令
Restart=always #服务总是重启
ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf #supervisor手动启动
[Install]
WantedBy=multi-user.target
#Target的含义是服务组,supervisord.service服务在他的组当中
设置完成后重启服务
systemctl restart supervisord.service
没有报错信息说明该服务正常启动
第三步将我们需要的服务添加到该程序当中
vim /etc/supervisord.conf 打开该配置文件下拉到最后一行
会发现这里指出supervisord监听的对象信息都包含在*.ini 这个文件当中,所以我们添加对象只需要配置ini文件即可
接下来我以tomcat为例
cd /etc/supervisord.d/
vim /etc/supervisord.d/tomcat.ini
[program:tomcat] #程序名称,在 supervisorctl 中通过这个值来对程序进行一系列的操作
command=/opt/server/tomcat8080/bin/catalina.sh run #tomcat的启动命令
stderr_logfile=/data/tomcat_logs/tomcat_stderr.log #错误日志的记录文件
stdout_logfile=/data/tomcat_logs/tomcat_stdout.log #指定日志输出的文件
user = root #指定启动的用户名
stdout_logfile_backups=10 #stdout 日志文件备份数
autostart=true # 在 supervisord 启动的时候也自动启动
autorestart=true #程序异常退出后自动重启
redirect_stderr=true # 把 stderr 重定向到 stdout,默认 false
priority=1 #优先级=1
进入管理菜单命令 supervisorctl
status all 查看全部服务
在这个界面可以看到所监控服务的全部状态
RUNNING 正常 STOPPED关闭
重启服务 restart tomcat 关闭服务 stop tomcat
查看日志 tail -f tomcat