參考文檔
官網: https://pypi.python.org/pypi/setuptools#unix-wget
案例: http://jingyan.baidu.com/album/375c8e198d1b1425f2a2290c.html?picindex=1
http://zhanboom.blog.51cto.com/3483769/900634
安裝部署
yum install python-setuptools
wget https://bootstrap.pypa.io/ez_setup.py -O - | python
cd /usr/local/python2/bin/
cp easy_install echo_supervisord_conf supervisor* /usr/bin
easy_install supervisor
echo_supervisord_conf > /etc/supervisord.conf
#2編輯
vi /etc/supervisord.conf(注意在最底部)
[program:http-server]
command=/bin/bash /server/script/test.sh ###表示運作的指令,填入完整的路徑即可 或者 command=memcached -m 2000 -u nobody -l 0.0.0.0 -c 10240 -p 11211
numprocs=1 ###啟動幾個程序
user=root ###程式運作的使用者
autostart=true ###表示是否跟随supervisor一起啟動
autorestart=true ###如果該程式挂了,是否重新啟動
startretries=10 ###啟動失敗時的最多重試次數
stdout_logfile=/var/log/stdout.log ###終端标準輸出重定向檔案
stderr_logfile=/var/log/stderr.log ###終端錯誤輸出重定向檔案。
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stdout_capture_maxbytes=1MB
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB
#3重新開機
/usr/bin/supervisord -c /etc/supervisord.conf
如果提示/tmp/supervisord.sock 報錯,删除/tmp/supervisord.sock重新啟動supervisor即可
supervisord (以daemon方式啟動)
或
supervisord -c /etc/supervisord.conf (非daemon)
#4supervisor 配置檔案注釋
#5測試
vi /etc/supervisord.conf (注意在最底部)
command=/bin/bash /server/script/test.sh
directory=/server/script
autostart=true
autorestart=true
startsecs=10
stdout_logfile=/var/log/http-server.log
stderr_logfile=/var/log/http-server-err.log
vi /server/script/test.sh
#!/bin/bash
while true
do
`echo $(date +%F) >> /tmp/test.log`
sleep 2
done
#殺
pkill supervisord
#啟起
/usr/bin/supervisord -c /etc/supervisord.conf
#查狀态
supervisorctl status
############ 相關指令詳情
supervisord -n 檢視監控程序的輸出
supervisorctl stop programxxx, 停止某一個程序(programxxx),programxxx為[program:chatdemon]裡配置的值
supervisorctl start programxxx, 啟動某個程序
supervisorctl restart programxxx,重新開機某個程序
supervisorctl stop all, 停止全部程序,注:start、restart、stop都不會載入最新的配置檔案。
supervisorctl reload, 載入最新的配置檔案,并按新的配置啟動、管理所有程序。
supervisorctl reread, 當一個服務由自動啟動修改為手動啟動時執行一下就ok
注意:
不帶參數運作supervisord是以daemon方式運作
當supervisord以非daemon方式運作時,殺掉supervisord後,被監控的程序也退出了。
而以daemon方式運作,殺掉supervisord對被監控程序無影響
弊端:
配置檔案改錯 所有程序将停止
配置某個程序有問題 該程序不能正常運作
正常判斷:是否存在且父程序是否supervisord程序
supervisorctl reload
ps -ef|egrep 'supervisord|*.sh'
測試 當負載很高 是否重新開機
本文轉自cloves 51CTO部落格,原文連結:http://blog.51cto.com/yeqing/1647344