windows服务器部署bat脚本自动检测重启挂掉的tomcat服务

项目背景:公司接手一个状态不稳定,性能比较差,一天几次挂,还没时间优化,就弄一个脚本用来检测项目是否在线,如果不在线就重启,该脚本实现的功能是:每五分钟监听端口是否在线,连接端口十次,有一次连不上就判定为服务挂了,关掉tomcat,再启动
1.脚本内容

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
rem 链接
set URL="http://localhost:8080/"
rem tomcat安装目录
set TOMCAT_HOME="C:\Users\wilson\Downloads\apache-tomcat-7.0.88-windows-x64\apache-tomcat-7.0.88"
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=300

:loop
set httpcode=0
cd /c %TOMCAT_HOME%
echo %date% %time%
echo 'begin checking tomcat'
rem 连接十次,一次连不上就算是挂机
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
timeout -t %TIME_WAIT% >nul
goto loop

2.在windows服务器中,bat并不一定能直接运行,如我写的脚本中的 curl ,在原始的服务器中会报错"不是内部或外部命令,也不是可执行的程序",这是因为缺少curl的库包,可以在官网下载.官网网址:https://curl.haxx.se/download.html
我们根据不同系统的配置选择合适的安装包,这是我的选择
windows服务器部署bat脚本自动检测重启挂掉的tomcat服务_第1张图片
先把bat脚本和压缩包弄到服务器上,如果你们的windows服务器可以直接运行bat脚本没有报错的话,就把后面的省略掉,因为我的服务器不能直接运行脚本,还要配置环境
先配置CURL_HOME ,值是解压包的路径
windows服务器部署bat脚本自动检测重启挂掉的tomcat服务_第2张图片
在path后面加上CURL_HOME的配置,path是jdk的路径
windows服务器部署bat脚本自动检测重启挂掉的tomcat服务_第3张图片
最后还需要配置名为CATALINA_HOME的配置,这个配置的值是tomcat目录,配置完的话就可以使用我弄的脚本了,大家可以配一次变量用cmd执行一次命令看看效果。

你可能感兴趣的:(bat文件,curl环境配置)