如果你懶于啟動腳本或者沒有啟動腳本,,但是又需要常駐后臺的進(jìn)程需要管理,那么supervisor一定不會失望,,你如果使用過supervisord,,那我想你不會跟我爭論nohup & 什么的也行的。
你可以通過yum直接安裝或者使用pip安裝,,下面使用pip安裝
環(huán)境:
centos6.5
python2.7.5
首先安裝必要的包:
yum install python-setuptools easy_install pip pip install supervisor
如果安裝成功就可以進(jìn)行下一步了,。
###生成必要的配置文件 echo_supervisord_conf > supervisord.conf ###將配置文件統(tǒng)一放在/etc下,我想centos用戶沒有異議吧 cp supervisord.conf /etc/supervisord.conf ###為了不將所有新增配置信息全寫在一個(gè)配置文件里,,我們新建一個(gè)文件夾,,每個(gè)配置信息新增一個(gè)配置文件,,相互隔離 mkdir /etc/supervisord.d/ 修改配置文件 vi /etc/supervisord.conf 加入以下配置信息 [include] files = /etc/supervisord.d/*.ini
接下來創(chuàng)建一個(gè)啟動腳本唄
#!/bin/sh # # /etc/init.d/supervisord # # Supervisor is a client/server system that # allows its users to monitor and control a # number of processes on UNIX-like operating # systems. # # chkconfig: - 64 36 # description: Supervisor Server # processname: supervisord # Source init functions . /etc/rc.d/init.d/functions prog="supervisord" prefix="/usr/local" exec_prefix="${prefix}" prog_bin="${exec_prefix}/bin/supervisord" PIDFILE="/var/run/$prog.pid" start() { echo -n $"Starting $prog: " ###注意下面這一行一定得有-c /etc/supervisord.conf 不然修改了配置文件根本不生效,! daemon $prog_bin -c /etc/supervisord.conf --pidfile $PIDFILE [ -f $PIDFILE ] && success $"$prog startup" || failure $"$prog startup" echo } stop() { echo -n $"Shutting down $prog: " [ -f $PIDFILE ] && killproc $prog || success $"$prog shutdown" echo } case "$1" in start) start ;; stop) stop ;; status) status $prog ;; restart) stop start ;; *) echo "Usage: $0 {start|stop|restart|status}" ;; esac
###然后加入啟動項(xiàng)唄 chmod +x /etc/init.d/supervisord chkconfig --add supervisord chkconfig supervisord on service supervisord start
如果想通過web查看管理的進(jìn)程,加入以下代碼,,監(jiān)聽9001,,用戶user,密碼123
[inet_http_server] port=9001 username=user password=123
在重啟之前隨便創(chuàng)建一個(gè)掛在后臺的命令
vi /etc/supervisord.d/tail.conf
[program:tail1] command=tail -f /etc/supervisord.conf ;常駐后臺的命令 autostart=true ;是否隨supervisor啟動 autorestart=true ;是否在掛了之后重啟,,意外關(guān)閉后會重啟,,比如kill掉! startretries=3 ;啟動嘗試次數(shù) stderr_logfile=/tmp/tail1.err.log ;標(biāo)準(zhǔn)輸出的位置 stdout_logfile=/tmp/tail1.out.log ;標(biāo)準(zhǔn)錯(cuò)誤輸出的位置
更多詳細(xì)的配置,,請參考 http://supervisord.org/
然后重啟瞧瞧
/etc/init.d/supervisord restart
##查看一下是否監(jiān)聽 lsof -i:9001 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME superviso 7782 root 4u IPv4 74522612 0t0 TCP *:etlservicemgr (LISTEN)
好的,,然后訪問服務(wù)器ip:9001
如你所見,可以看見正在運(yùn)行的程序的各種信息(沒有運(yùn)行的當(dāng)然也能看到),,通過簡單的點(diǎn)擊就能restart all,,stop all等命令~~~是不是異常強(qiáng)大!
原文地址:http://www.tuicool.com/articles/FRveyyU