天天看點

supervisor使用

參考文檔

   官網: 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