監視系統進程的腳本

最近在調試一個系統重啓的問題。系統運行三個主要的用戶程序prog1,prog2,prog3,其中prog1作爲主程序是帶有看門狗功能的,而且會守護prog2,如果發現prog2不在了就會重新啓動那個程序。

最近發現主程序經常卡死,然後過一段時間可能會重啓,也可能不重啓。查看var/log下的文件並沒有發現有用的信息。

系統是裁剪過的ubuntu12.04。

懷疑是否三個程序中的某個程序崩潰了,守護沒有起作用。想到用一個腳本來監視這三個程序。定時的把系統運行狀況和三個程序是否允許寫入到文件中,這樣在重啓後就可以看到重啓前是否程序死掉了。

腳本如下:(processmon.sh)

#!/bin/bash
while true
do
    date>>log
    top|head -n 20>>log
    ps aux|egrep -v egrep|egrep 'prog1|prog2|prog3'>>log
    sleep 2
done

然後使用

#nohup ./processmon.sh &

啓動後臺運行,這樣就可以監視了。

使用#fg 1轉入前臺

一個小教訓:一定要給腳本起一個有意義的名字。

開始的時候隨便把它命名爲a,然後啓動了後臺運行,後來那個終端關掉了,再打開一個終端,這個進程就找不到了,最後只好翻ps命令找,還沒法使用grep來篩選。如果使用有意義的名字,那就很容易用grep篩選了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章