<-Back

用supervisord管理你的进程

重开博客,第一篇技术类的文章用来记录supervisord的使用。

supervisord 是什么?

它是一个由python实现的进程管理工具,借助supervisord,你可以更加容易得管理和监控服务器进程,它可以将一个普通进程转换成守护进程,当被Kill掉或者意外终止时,能自动重新启动。它还提供一个web管理界面,你可以通过浏览器、手机进行管理

supervisord

下载安装

easy_install supervisor

创建配置文件

vim /etc/supervisord.conf  输入以下内容:

[unix_http_server]
file=/tmp/supervisor_monitor.sock

[supervisord]
pidfile=/tmp/supervisord_monitor.pid
logfile_backups=1

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///tmp/supervisor_monitor.sock

[inet_http_server]
port=127.0.0.1:9001
username = admin
password = 123456

 这些是supervisord的基本配置,没什么好说的,复制粘贴就ok。其中inet_http_server这一项是配置web管理界面的。

接下来是添加你需要管理的进程,同样在supervisord.conf后面追加内容如下:

[program:foo]
directory = /srv/foo/
environment = PYTHONPATH=/srv/foo/
command = /root/.virtualenvs/fooo/bin/python scheduler.py

其中foo是程序的名字,directory指定目录,enviroment设置执行程序所需的环境变量,command为启动程序所执行的命令。还有更多详细的配置选项和说明,请查阅这里的文档

启动 supervisord

supervisord -c /etc/supervisord.conf -l /var/log/supervisord.log
如果一切顺利,ps -ef grep foo应该能看到已经有一个进程在运行中了。你可以尝试kill -9 `pgrep -f foo`来杀死这个经常,稍等片刻supervisord会自动将它重启。

其它命令

停止运行某个程序: supervisorctl stop foo

重启某个程序: supervisorctl restart foo

“多说”已关闭,原评论数据丢失