Windows監控並重啟某個程式指令碼

Michael_DD發表於2014-12-19
Windows監控並重啟某個程式指令碼  


某程式(程式)在執行的時候可能掛掉,需要去監控該程式,並在它掛掉的時候重啟之,確保該程式能一直執行。
比如土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指定的值)。


示例程式如下: (firefox.exe火狐瀏覽器程式)

:RESTART
tasklist /FI "username eq administrator" | find /C "firefox.exe" > temp.txt
set /p num= < temp.txt
del /F temp.txt
echo %num%
if "%num%" == "0"   start /D "C:\Program Files\Mozilla Firefox\" firefox.exe  
ping -n 10 -w 2000 0.0.0.1 > temp.txt
del /F temp.txt
goto RESTART

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

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29500582/viewspace-1373214/,如需轉載,請註明出處,否則將追究法律責任。

相關文章