#万因皆有果,你的报应就是我。哈哈哈哈 ##公司的老旧项目,没太多时间重构,每月有那么几次服务宕机,思来想去写一个bat脚本监控下cat猫 ##原理比较傻瓜,但是还挺好用的,有需求的同行们可以借鉴下,有不妥之处希望批评指正
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
rem 链接
set URL="http://localhost:8080/" ##换成你自己需要监控的服务器及端口号
rem tomcat安装目录
set TOMCAT_HOME="D:\tomcat\tomcat" ##注意路径换成你自己的tomcat安装路径
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=1
:loop
set httpcode=0
cd /c %TOMCAT_HOME%
echo %date% %time%
rem 连接2次,2次都连不上就算是挂机
echo %date% %time% >>%LOG_PATH%
for /l %%i in (1,1,2) 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% ##打印日志方便日后查询debug
rd /S /Q %TOMCAT_CACHE%
echo start tomcat >>%LOG_PATH%
call %START_CMD%
echo success to start tomcat>>%LOG_PATH%
) else (
echo the tomcat run is ok >>%LOG_PATH%
)
timeout -t 3 >nul
timeout -t %TIME_WAIT% >nul
goto loop
3.点击保存,更改txt 为bat后缀文件名。
##注意事项 1.在windows服务器中,bat并不一定能直接运行,如我写的脚本中的 curl ,在原始的服务器中会报错"不是内部或外部命令,也不是可执行的程序",这是因为缺少curl的库包,可以在官网下载.官网网址:curl.haxx.se/download.ht… 我们根据不同系统的配置选择合适的安装包,这是我的选择