今天遇到一个需要在window server环境下对多个java程序监控若意外停止便重启的问题
由于taskName都为java.exe 无法通过名称判断程序启动情况,这时候来波操作------在jdk的bin目录下复制3个java.exe文件,并改名为
FtpMonitor.exe、ms-rs-core.exe、ms-web.exe使用这3个exe分别启动jar包
贴上监控的jk.bat
tasklist |find /C "ms-rs-core" >core.txt
set /p corenum=< core.txt
del /F core.txt
echo %corenum%
if "%corenum%" == "0" (
start /D"C:\Program Files\Java\jdk1.8.0_92\bin" ms-rs-core -jar D:\ms-rs-core\ms-rs-core-1.0.jar
)
tasklist |find /C "ms-web" >web.txt
set /p webnum=< web.txt
del /F web.txt
echo %webnum%
if "%webnum%" == "0" (
start /D"C:\Program Files\Java\jdk1.8.0_92\bin" ms-web -jar D:\ms-web\ms-web-1.0.jar
)
tasklist |find /C "FtpMonitor" >ftpmonitor.txt
set /p ftpnum=< ftpmonitor.txt
del /F ftpmonitor.txt
echo %ftpnum%
if "%ftpnum%" == "0" (
start /D"C:\Program Files\Java\jdk1.8.0_92\bin" ftpmonitor -jar D:\ftpmonitor\FtpMonitor.jar
)
或者,cd进目录下启动
tasklist |find /C "ms-rs-core" >core.txt
set /p corenum=< core.txt
del /F core.txt
echo %corenum%
if "%corenum%" == "0" (
cmd /k "cd /d D:\ms-rs-core&&ms-rs-core -jar D:\ms-rs-core\ms-rs-core-1.0.jar"
)
注:if 语句后面的()符,网上大佬没加但是我没加就执行不了,显示命令行语法不正确,加上OK。
最后把jk.bat放在window server下添加‘任务计划程序’做定时任务执行。--------over