1. 程式人生 > >windows下監控程序的指令碼 批處理實

windows下監控程序的指令碼 批處理實

[轉載]windows下監控程序的指令碼

(2012-06-09 23:27:43) 轉載
標籤:

轉載

相信大家都有這樣的需求,某程式(程序)在執行的時候可能掛掉,需要去監控該程式,並在它掛掉的時候重啟之,確保該程式能一直執行。比如土net就經常掛,需要監控程式去監控。Linux下面似乎有守護程序的概念,Windows下面其實也很簡單,dos批處理就可以搞定:-)

需要了解如下幾個命令,tasklist +find,ping。tasklist是列出所有程序,可以指定只列出某使用者的程序,用/FI引數過濾。find/C可以去tasklist的結果中查詢指定程序名,並輸出個數。

還有個問題是如何設定每隔一段時間去檢測程序是否在執行,我用的是ping命令自帶的延遲引數-w,將IP地址設定成一個空地址,比如0.0.0.1,這樣該命令會一直ping,直到一定n*w毫秒後才返回(n和w分別是引數-n和-w指定的值)。

示例程式如下,紅色部分需要根據需求進行替換,enjoy it!


:RESTART
tasklist /FI "username eq bigtree
" |find /C "java" >temp.txt
set /p num= < temp.txt
del /F temp.txt
echo %num%

if "%num%" == "0"         start /D"E:Userbigtreeprogramcomparison"pos

ping -n 10 -w 2000 0.0.0.1> temp.txt
del /F temp.txt
goto RESTART



注意1:goto語句是將監控程式設定成死迴圈,哇咔咔。
注意2:可以用start /D pathprogram去非同步呼叫program程式,也就是不等program指定完畢就執行下面的語句,因此可以設定固定間隔(n*w毫秒)去監測。
       如果用callprogram則是同步呼叫,會等待program執行完畢,這樣延遲就用不著了。