有些狀況下會碰到需要關閉 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