Windows下监控端口号
例如tomcat 端口号 如果tomcat 死掉 并重启
@echo off
rem 读取tomcat死之前 的配置文件 depotupdate赋予默认值 !null 升级失败造成的tomcat 死亡(java -jar 升级程序) 如果没有此值或者此文件 不知为何tomcat 会死 5分钟检测一次
set depotupdate=null
set tomcatPort=80
set URL="http://localhost:%tomcatPort%/depot/TestServlet"
set httpcode=0
rem 判断 tomcat 死活
for /l %%i in (1,1,10) do (
echo %%i
rem 借助工具获得项目的状态头(curl工具的安装会在下面提及)
for /f "delims=" %%r in ('curl -sL -w "%%{http_code}" %URL% -o /dev/null') do (
rem 将变量r的值赋值给httpcode
set httpcode=%%r
)
)
rem 判断 tomcat 是如何死的 如果是升级造成死亡 执行升级程序 否则直接启动
for /f "tokens=1,2 delims==" %%i in (%ETC_HOME%\ETC_Managent\apache-tomcat\conf\update.properties) do (
if "%%i"=="depotupdate" set depotupdate=%%j
if "%%i"=="tomcatPort" set tomcatPort=%%j
)
echo 是否通断 %httpcode%
echo 端口号 %tomcatPort%
rem 判断 httpcode 是否 ==200 200 说明通tomcat 还活着 , 不是200 说明不通 不同说明 tomcat 死了 启动
if not %httpcode%==200 (
netstat -ano|findstr 0.0.0.0:%host%>pid.txt
rem 查找进程记录,提取第5列的值,并终止进程,for 默认根据空格,制表符,;等进行字符串分割
for /f "tokens=5" %%i in (%cd%\pid.txt) do (
echo 虽然tomcat 死了但是进程依旧存在 杀死
echo try to kill pid %%i
taskkill /pid %%i /F
rem 删除pid.txt文件
del /a/f/q "%~dp0\pid.txt
)
echo depotupdate:%depotupdate%
rem 判断 update 状态 depotupdate 状态
if "null" == "%depotupdate%" (
echo depotupdate:%depotupdate% 不是升级造成的 重启Tomcat
::setx /M CATALINA_HOME "%ETC_HOME%\ETC_Managent\apache-tomcat"
%ETC_HOME%\ETC_Managent\apache-tomcat\bin\startup.bat
)
if not "null" == "%depotupdate%" (
echo depotupdate:%depotupdate% 是升级造成tomcat 挂掉 执行升级、
java -jar %ETC_HOME%\ETC_Managent\script\update.jar %depotupdate%
del /a/f/q %ETC_HOME%\ETC_Managent\apache-tomcat\conf\update.properties
)
)
pause
只限阅读,未经允许不得转载,如有问题请@本人,如我方内容侵权请及时告知我方。

浙公网安备 33010602011771号