背景:通过监听http请求,接收返回值判断程序是否运行正常,如果程序不能正常响应,则杀死程序对应的线程,启动程序或对应的服务
一、监听http请求,启动服务
1. monitor-service.bat
@echo off
:: 设置窗体背景颜色
color 1f
:: 设置窗体标题
title 正在监控http://localhost:8080
echo 正在监控 http://localhost:8080
:next
set code=500
curl -s http://localhost:8080>check.txt
for /f %%i in (check.txt) do set "code=%%i"
echo code为:%code%
if %code%==200 (
echo 在%date:~0,10% %time:~0,8% 访问正常
echo 正在监控http://localhost:8080
) else (
echo 在%date:~0,10% %time:~0,8% 无法正常访问,杀掉对应的进程
call kill-process.bat
echo 在%date:~0,10% %time:~0,8% 无法正常访问,重启中...
start myApp-service-start.bat
echo 在%date:~0,10% %time:~0,8% 重启成功
)
:: 休眠15秒
choice /t 15 /d y /n >nul
goto next
2. kill-process.bat
@echo off
:: 设置窗体背景颜色
color 1f
:: 设置窗体标题
title 根据端口杀死进程
set port=8080
for /f "tokens=1-5" %%i in ('netstat -ano^|findstr ":%port%"') do echo 准备杀死进程:%%m &taskkill /f /pid %%m &goto :end
:end
3. myApp-service-start.bat
@echo off
:: 以管理员权限运行
if not "%1"=="am_admin" (powershell start -verb runas '%0' am_admin & exit)
echo %date:~0,10% %time:~0,8% 服务启动中...
:: 该命令必须以管理员权限才能运行,否则会提示拒绝访问
net start myApp
echo %date:~0,10% %time:~0,8% 启动服务成功
pause
4. 服务正常运行时 ,运行监听脚本
5. 服务停止时 ,运行监听脚本
从以上结果可以看出监听正常
二、监听http请求,启动程序
2.1 monitor-net.bat
@echo off
:: 设置窗体背景颜色
color 1f
:: 设置窗体标题
title 正在监控http://localhost:8080
echo 正在监控 http://localhost:8080
:next
set code=500
curl -s http://localhost:8080>check.txt
for /f %%i in (check.txt) do set "code=%%i"
echo code为:%code%
if %code%==200 (
echo 在%date:~0,10% %time:~0,8% 访问正常
echo 正在监控http://localhost:8080
) else (
echo 在%date:~0,10% %time:~0,8% 无法正常访问,杀掉对应的进程
call kill-process.bat
echo 在%date:~0,10% %time:~0,8% 无法正常访问,重启中...
start jar-start.bat
echo 在%date:~0,10% %time:~0,8% 重启成功
)
:: 休眠5秒
choice /t 15 /d y /n >nul
goto next
2.2 jar-start.bat
@echo off
java -jar F:/spring-boot-security02-0.0.1-SNAPSHOT.jar
echo 启动服务成功
从程序未运行开始监听,到程序正常运行