在linux下監控進程,能夠使用inittab,最近找到了supervisor,也很好用,記錄一下:
一、系統要安裝python,並安裝與之對應的setuptools,下載地址在此
二、安裝:
# sh setuptoolsxxxx.egg
三、安裝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對被監控進程無影響。python