windows中 tomcat 服務檢測/重啓 bat 腳本

最近tomcat工程很不穩定,需要做一個自動檢測並重啓的程序,之前用python寫了個程序,
但由於有多個工程,並分別部署在多個服務器上,還需要一個個的去配置python環境,有點麻煩,所以就想着直接寫個 bat 腳本,
第一次自己動手寫,邊百度編寫,發現 批處理 腳本功能還是很強大的
該腳本主要通過檢測tomcat對應的工程鏈接是否已經正常啓動來重啓tomcat。
有失敗重置機制(這裏設置了十次),若連續請求10次都失敗了,則關閉tomcat並重啓tomcat,
(若當前tomcat未啓動,關閉會報錯,但不會影響程序往下運行,

也有通過根據窗口名來關閉tomcat的,但是當單個服務器部署多個tomcat時,需要去catalina.bat 中修改tomcat窗口名,本人這裏覺得麻煩就沒做這一步。


@echo off
SETLOCAL ENABLEDELAYEDEXPANSION

rem 鏈接
set URL="http://localhost:8080/"
rem tomcat目錄
set TOMCAT_HOME="D:\Tools\apache-tomcat-8.5.12"
rem 關閉tomcat命令的路徑
set CLOSE_CMD=%TOMCAT_HOME%\bin\shutdown.bat
rem 啓動tomcat命令的路徑
set START_CMD=%TOMCAT_HOME%\bin\startup.bat
rem tomcat緩存目錄
set TOMCAT_CACHE=%TOMCAT_HOME%\work
rem 日誌文件的路徑
set LOG_PATH=%TOMCAT_HOME%\check.log
rem 每次檢測完後等待時間,再進行下一次檢測,秒,若將程序部署到系統計劃任務,可忽略
set TIME_WAIT=5

:loop
set httpcode=0
cd /d %TOMCAT_HOME%
echo %date% %time%
echo 'begin checking tomcat'

echo %date% %time% >>%LOG_PATH%
for /l %%i in (1,1,10) do (
	echo %%i
	for /f "delims=" %%r in ('curl -sL -w "%%{http_code}" %URL% -o /dev/null') do (
		set httpcode=%%r
		if !httpcode!==200 (
			GOTO :OUTFOR
		)
	)
)

:OUTFOR
echo %httpcode% >>%LOG_PATH%

if not %httpcode%==200 (
	echo close tomcat >>%LOG_PATH%
	call %CLOSE_CMD%
	timeout -t 5 >nul
	echo success to close tomcat >>%LOG_PATH%

	rd /S /Q %TOMCAT_CACHE%
	echo start tomcat >>%LOG_PATH%
	call %START_CMD%
	
	echo success to start tomcat
	echo success to start tomcat >>%LOG_PATH%
) else (
	echo the tomcat run is ok
	echo the tomcat run is ok >>%LOG_PATH%
)
timeout -t 3 >nul
rem 若將腳本程序部署到系統計劃程序中,將以下代碼可註釋
timeout -t %TIME_WAIT% >nul
goto loop


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章