Supervisord是用python实现的进程管理工具,我们可以用它来监控服务运行,安装使用方法如下
sudo easy_install supervisor echo_supervisord_conf > /etc/supervisord.conf supervisord -c /etc/supervisord.conf
Supervisord默认的配置文件路径为/etc/supervisord.conf,通过文本编辑器修改这个文件
Supervisord安装完成后有两个可用的命令行supervisor和supervisorctl,命令使用解释如下:
supervisord,初始启动Supervisord,启动、管理配置中设置的进程。
supervisorctl stop programxxx,停止某一个进程(programxxx),programxxx为[program:chatdemon]里配置的值,这个示例就是chatdemon。
supervisorctl start programxxx,启动某个进程
supervisorctl restart programxxx,重启某个进程
supervisorctl stop all,停止全部进程,注:start、restart、stop都不会载入最新的配置文件。
supervisorctl reload,载入最新的配置文件,并按新的配置启动、管理所有进程。
参考:http://www.54chen.com/java-ee/supervisord-manage-service.html
配置示例如下:在/etc/supervisord.conf中添加如下代码,监控nginx进程
[program:web] command=/usr/local/ciaos/sbin/nginx process_name=%(program_name)s umask=022 startsecs=0 stopwaitsecs=0 redirect_stderr=true stdout_logfile=/tmp/codoon.log ;程序运行错误日志 ;numprocs=4 ;numprocs_start=1
1,运行supervisord -c /etc/supervisord.conf
2,此时无论我们如何kill正在运行的nginx进程,它都会被立刻唤醒,nginx的父进程就是supervisord进程
ciaos:~ # ps -ef | grep nginx root 32157 32137 0 10:13 ? 00:00:00 /usr/local/ciaos/sbin/nginx ciaos:~ # ps -ef | grep super root 32137 1 0 10:13 ? 00:00:00 /root/bin/python /root/bin/supervisord -c / etc/supervisord.conf