今天介绍一个进程管理工具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/