最近公司服务器有时会意外宕机,故提出需求,需要当服务器宕机时,自动重启服务器。
两个版本的批处理,一个需要配置到任务管理器中,一个不需要,因这两个批处理大部分指令代码相同,故只给出一个版本的。
版本一:(不需要配置到任务管理器中)
第一步:编写test.txt,其中内容为所开启服务器的绝对地址和端口号


第二步:编写批处理代码:
@echo off
rem 每次检测完后等待时间,再进行下一次检测
set TIME_WAIT=5
rem CURL配置路径
set CRUL_HOME="E:\soft\curl-7.63.0\I386"
for /f "usebackq tokens=1-2" %%a in ("E:\zhen\工作\批处理\pro\aa bb\test.txt") do (
rem tomcat目录
set TOMCAT_HOME=%%a
rem Tomcat端口号
set port=%%b
setlocal ENABLEDELAYEDEXPANSION
rem 测试链接
set URL="localhost:!port!/test/demo.jsp"
rem 关闭tomcat命令的路径
set CLOSE_CMD=!TOMCAT_HOME!\bin\shutdown.bat
rem 开启tomcat命令的路径
set START_CMD=!TOMCAT_HOME!\bin\startup.bat
rem 日志文件的路径
set LOG_PATH="E:\zhen\工作\批处理\pro\log\!port!.log"
setlocal DISABLEDELAYEDEXPANSION
call :loop
timeout -t %TIME_WAIT% -nobreak >nul
)
goto :eof
:loop
echo %date% %time:~0,8%正在检测%port%服务器 >>%LOG_PATH%
rem 进入curl的目录中
cd %CRUL_HOME%
rem 获取URL的状态码
for /f "delims=" %%r in ('curl -sL -w "%%{http_code}" %URL% -o /dev/null') do (
if %%r neq 200 (
echo 服务器异常,状态码为:%%r >>%LOG_PATH%
echo 正在关闭服务器...... >>%LOG_PATH%
rem 进入Tomcat目录
cd %TOMCAT_HOME%
call %CLOSE_CMD%
timeout -t 3 -nobreak >nul
echo 服务器已关闭 >>%LOG_PATH%
timeout -t 1 -nobreak >nul
echo 正在重启服务器....... >>%LOG_PATH%
call %START_CMD%
timeout -t 5 -nobreak >nul
rem 进入curl的目录中
cd %CRUL_HOME%
rem 判断服务器是否启动成功
for /f "delims=" %%r in ('curl -sL -w "%%{http_code}" %URL% -o /dev/null') do (
if %%r neq 200 (
echo 服务器启动失败 >>%LOG_PATH%
) else (
echo 服务器启动成功 >>%LOG_PATH%
)
)
) else (
echo 服务器正常运行中>>%LOG_PATH%
)
)
注:在批处理中,用到了curl工具来获取http的状态头,故需要先安装curl工具,方可运行此批处理。
针对公司服务器偶尔宕机的问题,本文介绍了如何创建批处理脚本来监控Tomcat服务器状态。通过在批处理文件中利用curl工具检查服务器HTTP状态,当服务器宕机时可自动执行重启操作。提供了无需配置到任务管理器的批处理代码示例。

1571

被折叠的 条评论
为什么被折叠?



