首页 > Linux工具使用 > Supervisor 进程管理的利器

Supervisor 进程管理的利器

2016年11月13日

Supervisor 进程管理的利器
http://imkerwin.com/556.html
Supervisor是一个基于python开发的进程管理工具。

用途就是有一个进程需要每时每刻不断的跑,但是这个进程又有可能由于各种原因有可能中断。当进程中断的时候我希望能自动重新启动它,号称守护进程的利器Supervisor就可以派上用场了。

测试环境 ubuntu 14.04 64位

安装:直接apt-get install supervisor 安装。

安装成功后需要生成配置文件,直接执行 echo_supervisord_conf > /etc/supervisord.conf

查看配置文件/etc/supervisord.conf,发现密密麻麻十分吓人,修改一下配置文件添加最后一行如下,

[include]
;files = relative/directory/*.ini
files = /etc/supervisor/conf.d/*.conf

修改原因是定义一下目录下的conf后缀的配置文件为supervisor所用,这样比较利于我们管理进程。

在/etc/supervisor/conf.d/*.conf下,可以按照需求定义多个进程管理配置文件,这样管理十分清晰。当然你直接在默认的配置文件下面一直添加也可以。操作因人而异,我比较喜欢前者。

下面以nginx.conf为例子

[email protected]:/etc/supervisor/conf.d# pwd
/etc/supervisor/conf.d

[email protected]:/etc/supervisor/conf.d# ls -al
total 12
drwxr-xr-x 2 root root 4096 Jan 19 01:01 .
drwxr-xr-x 3 root root 4096 Jan 18 23:08 ..
-rw-r–r– 1 root root 72 Jan 19 01:00 nginx.conf

[email protected]:/etc/supervisor/conf.d# cat nginx.conf
[program:nginx] //进程名称 自定义
command=/usr/sbin/nginx 启动进程命令,执行脚本,记得写好完整的路径
autostart=true 启动守护
autorestart=true 重启守护

就是这么简单,关于nginx进程的管理配置就完成了,当然你还可以添加其他定义参数,例如user指定用户

startsecs启动间隔,日志路径定义,错误输出重定向等等。文章最后有模板贴出,这个有兴趣也可以去官网http://supervisord.org/寻找更多详细说明。

可以根据自己需要管理的进程扩展,添加配置mysql.conf,apache.conf,php-fpm.conf等等

配置文件已经写好了,现在可以启动服务了。

supervisor启动方法:supervisord -c /etc/supervisord.conf

supervisor停止方法:supervisorctl shutdown (你也可以残忍的kill进程)

supervisor重新加载方法:supervisorctl reload (配置文件有变动,需要reload一下才生效)

supervisorctl命令可以打开supervisor管理的命令后台。

supervisorctl status可以查看当前进程的状态。

[email protected]:/etc/supervisor/conf.d# supervisorctl status
nginx RUNNING pid 6311, uptime 0:00:02

最后再说一句,supervisor也支持web界面管理,细心的你会在/etc/supervisord.conf配置文件里找到答案。

===================不华丽分割线================

附配置文件模板:

[program:cat]
command=/bin/cat
process_name=%(program_name)s
numprocs=1
directory=/tmp
umask=022
priority=999
autostart=true
autorestart=true
startsecs=10
startretries=3
exitcodes=0,2
stopsignal=TERM
stopwaitsecs=10
user=chrism
redirect_stderr=false
stdout_logfile=/a/path
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stdout_capture_maxbytes=1MB
stderr_logfile=/a/path
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB
environment=A=”1″,B=”2″
serverurl=AUTO

分类: Linux工具使用 标签:
本文的评论功能被关闭了.