文章出處

在linux下監控進程,可以使用inittab,最近找到了supervisor,也很好用,記錄一下:
1、系統要安裝python,并安裝與之對應的setuptools,下載地址在此
2、安裝:
# sh setuptoolsxxxx.egg
3、安裝supervisor,下載地址在此,解壓縮后
# python setup.py install
這就ok了,然后執行
# echo_supervisord_conf > /etc/supervisord.conf
修改/etc/supervisord.conf文件,加入你要監控的進程,里面的注釋很詳細,舉個簡單的例子:
這是一段要監控的進程的描述信息,添加到這個文件的末尾就好了:
[program:meta.txn.recover.on.error]
command=/cas/bin/meta.txn.recover.on.error ; 被監控的進程路徑
numprocs=1                    ; 啟動幾個進程
directory=/cas/bin                ; 執行前要不要先cd到目錄去,一般不用
autostart=true                ; 隨著supervisord的啟動而啟動
autorestart=true              ; 自動重啟。。當然要選上了
startretries=10               ; 啟動失敗時的最多重試次數
exitcodes=0                 ; 正常退出代碼(是說退出代碼是這個時就不再重啟了嗎?待確定)
stopsignal=KILL               ; 用來殺死進程的信號
stopwaitsecs=10               ; 發送SIGKILL前的等待時間
redirect_stderr=true          ; 重定向stderr到stdout
為了節省空間,注釋的內容就不貼出來了。
執行
# supervisord -n
能在控制臺看到監控進程的輸出:
2010-08-17 10:26:07,467 INFO supervisord started with pid 943
2010-08-17 10:26:08,469 INFO spawned: 'meta.txn.recover.on.error' with pid 1009
2010-08-17 10:26:09,876 INFO success: meta.txn.recover.on.error entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2010-08-17 10:26:48,442 INFO exited: meta.txn.recover.on.error (terminated by SIGKILL; not expected)
2010-08-17 10:26:49,444 INFO spawned: 'meta.txn.recover.on.error' with pid 2427
2010-08-17 10:26:50,487 INFO success: meta.txn.recover.on.error entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
黑體的地方是我用kill -9殺掉進程后出來的,看到supervisor檢測到進程退出后又再次啟動了進程。
不帶參數運行supervisord是以daemon方式運行。
把supervisord加入到開機啟動項里就可以完成監控進程的功能了。


【注意】:當supervisord以非daemon方式運行時,殺掉supervisord后,被監控的進程也退出了。
而以daemon方式運行,殺掉supervisord對被監控進程無影響。


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()