windows環境下批處理實現守護進程


這個腳本提供兩種方式守護,一種是通過進程名,但對於進程名都是java.exe的java程序不適用,另一種是通過netstat查找應用程序所監聽的端口是否正在被監聽。這兩種方式可以在腳本中通過兩個冒號注釋來選擇切換。下面是設置成通過端口來守護的,當端口沒被監聽則打開一個zip文件,所以運行后會發現沒過5秒會重復打開這個zip文件,除非這個zip文件打開后會自動監聽8080端口,那當然是不可能的!腳本涉及的命令就不解釋了搜一下就知道了。
[plain]  view plain  copy
 
 
 
  在CODE上查看代碼片派生到我的代碼片
  1. @echo off  
  2.   
  3. ::檢測時間間隔,單位:秒  
  4. set _interval=5  
  5.   
  6. ::需要守護的進程名稱  
  7. set _processName=WinRAR  
  8.   
  9. ::需要守護的進程啟動命令  
  10. set _processCmd=C:\ideavim-0.32.zip  
  11.   
  12. ::需要守護的進程預估啟動完畢所需時間,單位:秒  
  13. set _processTimeout=10  
  14.   
  15. ::需要守護的進程所監聽的端口  
  16. set _port=8080  
  17.   
  18. ::進程用戶名,一般是Administrator  
  19. set _username=Administrator   
  20.   
  21. :LOOP  
  22. set /a isAlive=false  
  23.   
  24. ::通過進程名稱檢測  
  25. ::tasklist /FI "username eq %_username%" | find /C "%_processName%" > temp.txt  
  26. ::set /p num= < temp.txt  
  27. ::del /F temp.txt  
  28.   
  29. ::通過進程的端口是否正在被監聽檢測  
  30. netstat -an | find /C "0.0.0.0:%_port%" > temp.txt  
  31. set /p num= < temp.txt  
  32. del /F temp.txt  
  33.   
  34. if "%num%" == "0" (  
  35. start %_processCmd% | echo 啟動 %_processName% 於 %time%  
  36. choice /D y /t %_processTimeout% > nul  
  37. )  
  38.   
  39. if "%num%" NEQ "0" echo 已啟動  
  40.   
  41. ::ping -n %_interval% 127.1>nul  
  42. choice /D y /t %_interval% >nul  
  43.   
  44. goto LOOP  

該腳本運行后會出現一個dos窗口,若覺得礙眼可以用記事本將下面保存為擴展名為.vbs的文件。其中guard.bat是上面批處理保存的文件名。兩個文件放在同一目錄下雙擊vbs文件后,守護進程就在后台運行了,單這樣得通過資源管理器結束cmd進程才能停止守護進程。

 

[plain]  view plain  copy
 
 
 
  在CODE上查看代碼片派生到我的代碼片
  1. set ws=WScript.CreateObject("WScript.Shell")  
  2. ws.Run "guard.bat",0  
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM