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

  

猜你喜欢

转载自www.cnblogs.com/wzy-525/p/13374687.html
今日推荐