bat 自动重启 Tomcat
脚本来自 Windows 中 Tomcat 无故宕机,如何自动重启 Tomcat,这里给脚本添加注释
@echo off rem 启用延迟变量扩展(delayed variable expansion) SETLOCAL ENABLEDELAYEDEXPANSION rem 链接 set URL="http://localhost:8008/" rem tomcat目录 set TOMCAT_HOME="D:\Program Files\apache-tomcat-9.0.50" 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%\temp rem 日志文件的路径 set LOG_PATH=%TOMCAT_HOME%\check.log rem set LOG_PATH=nul rem 每次检测完后等待时间,再进行下一次检测,秒,若将程序部署到系统计划任务,可忽略 set TIME_WAIT=5 rem 自定义标签,和 goto 结合使用 :loop set httpcode=0 rem 切换到tomcat目录 rem /d 表示要切换到一个新的目录,而且这个目录可以位于不同的驱动器 cd /d %TOMCAT_HOME% echo %date% %time% echo 'begin checking tomcat' echo %date% %time% >>%LOG_PATH% rem 创建一个循环,从1到10的范围中遍历每个数字 rem /l 表示要创建一个数字范围的循环 rem %%i 循环变量,用于在每次迭代中存储循环的当前值 rem in (1,1,10) 表示从1开始,以1为步长,一直循环到10 for /l %%i in (1,1,10) do ( echo %%i rem 执行 curl 命令来获取指定URL的HTTP响应代码 rem /f 表示要使用文件或命令的输出作为循环变量 rem "delims=" 这是 for 命令的参数,指定分隔符(delimiters)。在这个例子中,delims= 表示没有分隔符,因此整个输出行将被视为一个整体 rem 'curl -sL -w "%%{http_code}" %URL% -o /dev/null' 用于获取指定URL的HTTP响应代码 rem curl 是一个用于发起HTTP请求的命令行工具,-sL 参数表示安静模式并且跟踪重定向 rem -w "%%{http_code}" 表示使用 -w 参数指定输出格式,返回HTTP响应代码 rem %URL% 是要请求的URL地址,-o /dev/null 表示将响应的主体部分输出到/dev/null(相当于丢弃响应主体) for /f "delims=" %%r in ('curl -sL -w "%%{http_code}" %URL% -o /dev/null') do ( set httpcode=%%r rem ! 是用于启用延迟变量扩展(delayed variable expansion)的标记 if !httpcode!==200 ( goto :OUTFOR ) ) ) :OUTFOR echo %httpcode% >>%LOG_PATH% if not %httpcode%==200 ( echo close tomcat >>%LOG_PATH% call %CLOSE_CMD% rem 创建一个5秒的等待时间 rem timeout 创建一个等待指定时间的暂停 rem -t 5 等待5秒 rem >nul > 表示将命令的输出重定向到指定位置,nul 是一个特殊的设备文件,用于丢弃命令的输出,也就是不显示命令的输出 timeout -t 5 >nul echo success to close tomcat >>%LOG_PATH% rem 删除缓存目录 rem rd "remove directory"的缩写,用于删除目录(文件夹) rem /S 递归删除整个目录树 rem /Q 表示"quiet",即不显示任何确认信息或提示) 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
添加注释后不能运行,要去掉:
@echo off SETLOCAL ENABLEDELAYEDEXPANSION set URL="http://localhost:8008/" set TOMCAT_HOME="D:\Program Files\apache-tomcat-9.0.50" set CLOSE_CMD=%TOMCAT_HOME%\bin\shutdown.bat set START_CMD=%TOMCAT_HOME%\bin\startup.bat set TOMCAT_CACHE=%TOMCAT_HOME%\temp set LOG_PATH=%TOMCAT_HOME%\check.log 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 timeout -t %TIME_WAIT% >nul goto loop
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
2022-10-29 查看 MySQL 数据库文件储存位置