Supervisor是一個進程管理工具,官方的說法
用途就是有一個進程需要每時每刻不斷的跑,但是這個進程又有可能由於各種原因有可能中斷。當進程中斷的時候我希望能自動重新啟動它,此時,我就需要使用到了Supervisor
這個工具主要就兩個命令:
supervisord : supervisor的服務器端部分,啟動supervisor就是運行這個命令
supervisorctl:啟動supervisor的命令行窗口。
安裝(Centos):
yum install python-setuptools -y easy_install supervisor #如果easy_install不好使就從官方下載: #然后通過python安裝: tar zxf supervisor-3.1.3.tar.gz cd supervisor python setup.py install
成功安裝后可以登陸python控制台輸入import supervisor 查看是否能成功加載。
生成配置文件(supervisord.conf):
echo_supervisord_conf > /etc/supervisord.conf
修改配置文件:
在supervisord.conf最后增加(分號后邊的表示注釋,可以不寫):
[program:bandwidth] command=python26 /usr/local/bin/bandwidth.sh ;需要執行的命令wd) user =root ;(default is current user , required if root) autostart=true ;start at supervisord start (default: true) autorestart=true ;whether/when to restart (default: unexpected) startsecs=3 ;number of secs prog must stay running ( def . 1) stderr_logfile=/tmp/bandwidth_err.log ;redirect proc stderr to stdout (default false) 錯誤輸出重定向 stdout_logfile=/tmp/bandwidth.log ;stdout log path, NONE for none; default AUTO, log輸出 #(更多配置說明請參考:http://supervisord.org/configuration.html)
運行命令:
#啟動supervisor supervisorctl //打開命令行 [root @iZ2365j7l5bZ bin]# supervisorctl status bandwidth RUNNING pid 2423 , uptime 0 : 06 : 35 [root @iZ2365j7l5bZ bin]# supervisorctl help default commands (type help <topic>): ===================================== add clear fg open quit remove restart start stop update avail exit maintail pid reload reread shutdown status tail version ctl中: help //查看命令 ctl中: status //查看狀態
另外有一個坑需要注意:如果修改了 /etc/supervisord.conf ,需要執行 supervisorctl reload 來重新加載配置文件,否則不會生效。。