Supervisor是一个客户端/服务器系统,允许其用户监视和控制类似UNIX的操作系统上的多个进程。

它具有一些与启动程序,daemontools和runit等程序相同的目标。 与这些程序中的某些程序不同,它不应作为“进程ID 1”的替代init运行。 相反,它旨在用于控制与项目或客户相关的过程,并且旨在在启动时像任何其他程序一样启动。

安装supervisord

yum install supervisor

配置守护进程

在/etc/supervisord.d/下新建后缀名为ini的文件

; 设置进程的名称,使用 supervisorctl 来管理进程时需要使用该进程名
[program:myblog] 
directory = /home/web/myblog          ; 程序的启动目录
command=./start.sh start              ; 启动命令 最好绝对路径
autostart = true                      ; 在 supervisord 启动的时候也自动启动
numprocs=1                            ; 默认为1
RestartSec=30
process_name=%(program_name)s         ; 默认为 %(program_name)s,即 [program:x] 中的 x
user=root                             ; 使用 root 用户来启动该进程
autorestart=true                      ; 程序崩溃时自动重启,重启次数是有限制的,默认为3次
redirect_stderr=true                  ; 重定向输出的日志
stderr_logfile= /home/web/myblog/myblog_stderr.log
stdout_logfile = /home/web/myblog/myblog_stdout.log
loglevel=info

启动supervisord

systemctl restart supervisord.service

启动我们配置的进程

supervisorctl start server:myblog

此时可能会报错 server:myblog: ERROR (no such process)

我们执行一下下面这句话

supervisord -c /etc/supervisord.conf

重新启动

supervisorctl start server:myblog

此时我们看一下进程,就会启动成功了。