跳到主要內容

自動化重啟 Java Process

有些狀況下會碰到需要關閉 Java process 的狀況
不管是不可預期的,例如 OOM 導致 process crash
或是可預期的狀況,例如需要 Java程式、設定檔更新,而在系統內用 System.exit(0);
通常我們都會需要馬上再重開 Java process,將處理流程自動化會方便得多

Linux  bash 示範

  JPID=0
  while [ $JPID-eq 0 ]
  do

    eval "(java ...)"   # eval your own java process.
    JPID=$?       # set PID to status.

  done

用個迴圈監聽PID是否存在
Windows batch 寫法也是基於同樣概念

:exeLoop
set JPID=-1
for /F "tokens=1" %%i in ('jps -lv ^| find "%MAINCLASS%"') do ( set JPID=%%i )
if %JPID%==-1 (
echo %_EXECJAVA% %JAVA_OPTS% -classpath "%CLASSPATH%" -.... %MAINCLASS%
:: execute your own java process.

ping 127.0.0.1 -n 2 -w 1000 > nul    :: wait for 2 seconds before next loop.
)
goto exeLoop

留言