应用存活监控,自动重启,bat脚本
脚本简述:
使用bat脚本对应用的端口进行telnet监测,监测间隔10S,如果失败则自动找到应用启动路径进行重启
测试环境:
系统 | 应用 | 脚本类型 |
---|---|---|
Windows Server 2016 | tomcat | bat脚本 |
直接上脚本:
@echo off
rem 要检测的IP和端口
set server_ip="192.168.1.11"
set serverport="8080"
rem 日志位置
set logs_dir ="D:\进程守护日志"
call :check_port
rem tomcat 启动路径
set tomcat_start="D:\tomcat\startup.bat"
:check_port
rem 新窗口打开telnet,如果端口畅通会立即退出,脚本会在3秒后查看telnet窗口是否退出,如果没有退出表示端口不通!
echo [%date%%time%]:正在检测 %server_ip% 的 %serverport% 端口...
rem 打开一个telnet窗口
start /min cmd.exe /k "echo q|telnet -e 'q' %server_ip% %serverport%"
rem 等待4秒
ping -n 4 127.1>nul
tasklist /fi "windowtitle eq 管理员: Telnet %server_ip%" | find "cmd.exe" >nul && (
echo [%date%%time%]:【失败】无法连通 %server_ip%:%serverport% >>%logs_dir%\%date:~0,4%%date:~5,2%%date:~8,2%.txt
echo [%date%%time%]:【失败】无法连通 %server_ip%:%serverport%
rem 关闭telnet失败的窗口
taskkill /f /fi "windowtitle eq 管理员: Telnet %server_ip%" > NUL
echo [%date%%time%]:关闭挂掉的服务窗口...
taskkill /f /fi "windowtitle eq "测试环境" - call %tomcat_start%" > NUL
echo [%date%%time%]:准备重启服务...(在此期间检测脚本会等待10分钟,1分钟后删除jvm报错后生成的.mdmp文件,然后再等待9分钟继续检测服务是否正常运行)
start "测试环境" /min cmd /k "call %tomcat_start%"
ping 127.0.0.1 -n 60 > NUL
echo [%date%%time%]:正在删除jvm报错后生成的.mdmp文件...
del/f/q "*.mdmp"
rem 等待10分钟
ping 127.0.0.1 -n 520 > NUL
echo [%date%%time%]:重启等待完毕,10秒后准备下一次检测,若10秒后日志未打印失败结果,则证明重启成功 >> %logs_dir%\%date:~0,4%%date:~5,2%%date:~8,2%.txt
) || (
rem 关闭telnet成功的窗口
taskkill /f /fi "windowtitle eq 管理员: Telnet" > NUL
echo [%date%%time%]:【成功】可以连接到 %server_ip%:%serverport% >>%logs_dir%\%date:~0,4%%date:~5,2%%date:~8,2%.txt
echo [%date%%time%]:【成功】可以连接到 %server_ip%:%serverport%
)
ping 127.0.0.1 -n 10 > NUL
echo.
goto :check_port