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 的方式启动。
本文已通过「原本」原创作品认证,转载请注明文章出处及链接。