红联Linux门户
Linux帮助

ubuntu下的supervisor配置入门

发布时间:2016-04-23 10:03:44来源:linux网站作者:Eric_aihua

Linux的后台进程运行有好几种方法,例如nohup,screen等,但是,如果是一个服务程序,要可靠地在后台运行,我们就需要把它做成daemon,最好还能监控进程状态,在意外结束时能自动重启。

supervisor就是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。


1.安装supervisor
Debian / Ubuntu可以直接通过apt安装:
# apt-get install supervisor


2.一个简单的例子
开发一个简单的python程序,让supervisor来管理它。每个进程的配置文件都可以单独分拆,放在/etc/supervisor/conf.d/目录下,以.conf作为扩展名,例如,app.conf定义了一个python的进程:

Python代码如下:app_py.py
import time 
def test(): 
while True: 
print "#################test" 
time.sleep(2) 
test() 

app.conf配置如下:
[program:app] 
command= python app_py.py 
directory=/root 
user=root 


3.验证
首先查看当前app_py.py的进程号
kill -9 该进程
再次用ps -ef |grep app_py,发现产生了一个新的进程


4.[program:example]中的参数说明如下
;command=/bin/echo;         supervisor启动时将要开启的进程。相对或绝对路径均可。若是相对路径则会从supervisord的$PATH变中查找。命令可带参数。 
;priority=999                   指明进程启动和关闭的顺序。低优先级表明进程启动时较先启动关闭时较后关闭。高优先级表明进程启动时启动时较后启动关闭时较先关闭。 
;autostart=true                 是否随supervisord启动而启动 
;autorestart=true               进程意外退出后是否自动重启 
;startsecs=10                   进程持续运行多久才认为是启动成功 
;startretries=3                 重启失败的连续重试次数 
;exitcodes=0,2                  若autostart设置为unexpected且监控的进程并非因为supervisord停止而退出,那么如果进程的退出码不在exitcode列表中supervisord将重启进程 
;stopsignal=QUIT                杀进程的信号 
;stopwaitsecs=10                向进程发出stopsignal后等待OS向supervisord返回SIGCHILD 的时间。若超时则supervisord将使用SIGKILL杀进程


本文永久更新地址:http://www.linuxdiyf.com/linux/20005.html