1. 程式人生 > >window下監控java程式

window下監控java程式

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指定完畢就執行下面的語句