window下監控java程式
阿新 • • 發佈:2019-02-13
1、需求:window環境下對多個java程式進行監控,如果程式意外停止,將自動對任務進行重啟。
2、分析:啟動java程式後,程序中的任務名稱都是java.exe;當程式停止後,我們無法通過檔名稱來啟動對應的程式。為了能通過任務名稱啟動對應的java程式,我們必須為每個程式對映對應的taskName,操作為:在jdk的bin目錄下,根據需要監控的程式個數,複製java.exe檔案個數;並改名成對應的java程式名稱,分別使用對應的程式名.exe檔案啟動對應的jar包;
3、指令碼具體程式碼:
tasklist |find /C "JMSConsumer" >JMSConsumer.txt set /p consumernum=< JMSConsumer.txt del /F JMSConsumer.txt echo %consumernum% if "%consumernum%" == "0" ( start /D"C:\Users\Desktop\123" JMSConsumer -jar JMSConsumer.jar ) tasklist |find /C "JMSProducer" >JMSProducer.txt set /p producernum=< JMSProducer.txt del /F JMSProducer.txt echo %producernum% if "%producernum%" == "0" ( start /D"C:\Users\Desktop\123" JMSProducer -jar JMSProducer.jar )
4、最後把jk.bat指令碼放在window server下新增任務計劃程式,做成定時任務
5、相關名詞解釋:
tasklist是列出所有程序,可以指定只列出某使用者的程序,用/FI引數過濾。
find /C可以去tasklist的結果中查詢指定程序名,並輸出個數,"JMSConsumer" >JMSConsumer.txt將"JMSConsumer"命令的結果輸出到"JMSConsumer.txt"這個文字檔案中去;
set /p consumernum=< JMSConsumer.txt 將當前命令的返回結果輸入到後面的檔案中(覆蓋) consumernum< 將其後面的檔案的內容作為其前面命令的輸入
可以用start /D path program去非同步呼叫program程式,也就是不等program指定完畢就執行下面的語句