监视系统进程的脚本

最近在调试一个系统重启的问题。系统运行三个主要的用户程序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筛选了

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