windows下tomcat无故宕机自动检测重启,完美解决shutdown无法关闭问题

windows下tomcat无故宕机自动检测重启,完美解决shutdown无法关闭问题

1、废话不说先上脚本这个脚本也是参考大佬的这个随便放在一个地方,直接管理员方式运行就可以

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION

rem 链接
set URL="http://localhost:8345/"
rem tomcat目录
set TOMCAT_HOME="D:\apache-tomcat-7.0.82"
rem 关闭tomcat命令的路径
set CLOSE_CMD=%TOMCAT_HOME%\bin\closetomcatpid.bat
rem 启动tomcat命令的路径
set START_CMD=%TOMCAT_HOME%\bin\startup.bat
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%


    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

2、大佬用的是tomcat里面的shutdown.bat,但是生产环境里会遇到无法关闭的问题,再启动的时候会报错起不来,这里我进行改进,用自己写的脚本代替
,主要改动是CLOSE_CMD这个参数,在tomcat的bin里面新增closetomcatpid.bat文件,用检测端口获取pid的方式结束进程,这样就可以关闭tomcat,并且过滤掉pid等于0的情况,如果不过滤可能会直接报错卡主,不往下执行,文件内容如下:

@echo off
for /f "tokens=5" %%i in ('netstat -aon ^| findstr ":8345"') do (
    if %%i NEQ 0 taskkill /f /pid %%i
)

3、8345是端口号记得修改,需要你们修改的参数就是URL,tomcat目录,端口号这三个
特此感谢大佬的文章

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值