Supervisor 是用 Python 实现的一个进程管理工具,可以很方便用来管理进程,包括启动、关闭及重启等操作,经常被用来监听 web 服务,一旦服务挂掉,可以让服务自动重启。Supervisor 管理的程序都必须是非 daemon 程序。
使用方法
安装supervisor
$ yum install supervisor
配置supervisor
$ vi /etc/supervisord.conf
将文件末尾:
[include] files = supervisord.d/*.ini
修改为:
[include] files = supervisord.d/*.conf
新建文件
为了方便管理,在自定义配置文件目录下,创建项目的配置文件。
$ cd /etc/supervisord.d/ $ vim leanote.conf #新建一个自定义配置文件
其中内容为:
[program:leanote] #程序名 command=bash /opt/leanote/run.sh #需要执行的命令 autostart=true #是否跟随supervisor一起启动 autorestart=true #如果该程序挂了,是否重新启动 startsecs=10 #自动重启间隔 stdout_logfile=/var/log/leanote.log #终端标准输出重定向文件 stdout_logfile_maxbytes=2MB #文件最大大小 stdout_logfile_backups=30 #文件备份最大数量 stdout_capture_maxbytes=2MB stderr_logfile=/var/log/leanote.log #终端错误输出重定向文件 stderr_logfile_maxbytes=2MB stderr_logfile_backups=30 stderr_capture_maxbytes=2MB
启动服务
使用默认配置:
$ supervisord
或者指定配置文件:
$ /usr/bin/supervisord -c /etc/supervisord.conf
设置为开机自动启动
$ systemctl enable supervisord.service
一些常用命令
启动某个进程(假设进程名为 leanote)
supervisorctl stop leanote
停止某个进程(假设进程名为 leanote)
supervisorctl stop leanote
重启某个进程(假设进程名为 leanote)
supervisorctl restart leanote
停止全部进程
supervisorctl stop all
重新载入
supervisorctl reload
更新
supervisorctl update
结束语
Supervisord 是一个非常好用的进程管理工具,使用 Supervisord 有一个前提条件,那就是进程必须以非 daemon 的方式启动。例如:管理 nginx 的话,必须在 nginx 的配置文件里添加一行设置 daemon off,让 nginx 以非 daemon 的方式启动。