今天介绍一个进程管理工具supervisor,Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去即可。也实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可以选择是否自己启动和报警。supervisor还提供了一个功能,可以为supervisord或者每个子进程,设置一个非root的user,这个user就可以管理它对应的进程。

supervisor的安装很简单

easy_install supervisor
生成初始配置文件

echo_supervisord_conf > /etc/supervisord.conf
vim /etc/supervisord.conf
#配置文件最后一行进行修改
[include]
;files = relative/directory/.ini
files = /etc/supervisord.d/
.conf
配置应用启动文件

mkdir -p /etc/supervisord.d/
cd /etc/supervisord.d/
vim suptest.conf
#配置段内容如下
[program:suptest] #定义program,启动时使用,比如"supervisorctl start suptest"
user=root
command= xxxx #应用启动命令,具体实际为准
autostart=true #伴随服务自动启动
autorestart=true #伴随服务自动重启
startsecs=10
stdout_logfile=/data/logs/suptest.log #定义日志输出路径,需确保目录存在
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stdout_capture_maxbytes=1MB
stderr_logfile=/data/logs/suptest_err.log #定义错误日志输出路径,需确保目录存在
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB
stopsignal=INT
[supervisord] #配置结束标志
启动supervisor服务

/usr/local/bin/supervisord -c /etc/supervisord.conf #启动服务
suptest服务的启动关闭重启操作

supervisorctl start suptest
supervisorctl stop suptest
supervisorctl restart suptest
supervisorctl status
supervisorctl start all #所有进程的操作
supervisor的web管理界面配置

vim /etc/supervisord.conf
#配置文件最后一行进行修改
[inet_http_server]
port=0.0.0.0:8080
username=supervisor
password=supervisor
重启服务,可通过web访问控制

原文地址:http://www.izcat.com/45/223/