第一步,修改tomcat默认的进程名

因为所有的tomcat项目的进程名默认都叫java.exe,所以需要修改tomcat容器bin目录下的setclasspath.bat。注释掉:(在set前加上:冒号就行)

set _RUNJAVA="%JRE_HOME%\bin\java.exe"

这句,改成

copy "%JAVA_HOME%\bin\java.exe" "%JAVA_HOME%\bin\xxxx.exe"
set _RUNJAVA="%JAVA_HOME%\bin\xxxx"

这样,重启tomcat项目,在 任务管理器 中就会看到更改后的进程名。

第二步,编写bat脚本

@echo off
rem setlocal是批处理本地化的一种操作,在执行setlocal之后所做的环境改动只限于批处理文件
rem ENABLEDELAYEDEXPANSION 启用变量延迟,直到出现匹配的endlocal命令
SETLOCAL ENABLEDELAYEDEXPANSION rem rem的意思是注释
rem 链接
set URL="http://xx.xx.xx.xx:808x/xxxx/xxxx.jsp"
rem tomcat目录
set TOMCAT_HOME="C:\xxxx-tomcat-8.5.31"
rem 关闭tomcat命令的路径(xxx.exe就是第一步中设置的进程名)
set CLOSE_CMD=taskkill /f /t /im xxxx.exe
rem 启动tomcat命令的路径
set START_CMD=%TOMCAT_HOME%\bin\startup.bat
rem tomcat缓存目录
set TOMCAT_CACHE=%TOMCAT_HOME%\work
rem 日志文件的路径
set LOG_PATH=%TOMCAT_HOME%\logs\check.log
rem 每次检测完后等待时间,再进行下一次检测,若将程序部署到系统计划任务,可忽略
rem set TIME_WAIT=30
rem echo string:将字符串显示在屏幕中
rem :loop 和下面的goto组合成循环
:loop
rem 设置变量http状态码
set httpcode=0
rem 打开tomcat目录
cd /d %TOMCAT_HOME%
rem 打印时间
echo %date% %time%
rem 在屏幕上打印执行状态
echo 'begin checking tomcat' rem 将记录保存在日志文件中
echo %date% %time% >>%LOG_PATH%
rem 循环
rem FOR [参数] %%变量名 IN (相关文件或命令) DO 执行的命令
rem 其中参数有/d /l /r /f
rem 参数 /d (参数只能显示当前目录下的目录名字)
rem 参数 /R (搜索指定路径及所有子目录中与set相符合的所有文件)
rem 参数 /L (该集表示以增量形式从开始到结束的一个数字序列。可以使用负的 Step)
rem 参数 /F (使用文件解析来处理命令输出、字符串及文件内容。)
rem (相关文件或命令)指定一个或一组文件。可以使用通配符
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
if !httpcode!==200 (
GOTO :OUTFOR
)
)
) :OUTFOR
echo %httpcode% >>%LOG_PATH% if not %httpcode%==200 (
call %NOTIFICATION_MESS%
echo close tomcat >>%LOG_PATH%
rem 关闭tomcat call在批处理中用于调用另一个批处理文件,start用于执行一些外部程序
start %CLOSE_CMD%
timeout -t 10 >nul
rem 记录日志
echo success to close tomcat >>%LOG_PATH%
rem 清除tomcatwork空间 /s意思是不需要确认的删除 /Q是清除目录及子目录
rd /S /Q %TOMCAT_CACHE%
echo start tomcat >>%LOG_PATH%
rem 开启tomcat,执行bat文件
call %START_CMD% echo success to start tomcat
echo success to start tomcat >>%LOG_PATH%
) else (
echo the tomcat is running
echo the tomcat is running>>%LOG_PATH%
)
timeout -t 3 >nul
rem 若将脚本程序部署到系统计划程序中,将以下代码可注释
rem timeout -t %TIME_WAIT% >nul
rem goto loop

第三步,设置windows计划任务。

如何设置计划任务,可以自行百度。贴一个我设置的。

程序或脚本中,选择第二步创建的bat脚本。这样每隔5分钟,系统调用一次bat脚本,bat判断tomcat是否还在运行。如果10秒钟之后,访问bat中的url失败,tomcat项目将会自动启动。


如果有多个tomcat需要此类操作,只需要将每个tomcat项目按照上面三步操作一遍,最终实现监控多个tomcat,避免项目自动关闭的问题。

windows服务器监控多个tomcat运行状态的更多相关文章

  1. Tomcat在windows服务器下,将tomcat控制台日志记录到日志文件中

    Tomcat在windows服务器下,将tomcat控制台日志记录到日志文件中 在Linux系统中,Tomcat 启动后默认将很多信息都写入到 catalina.out 文件中,我们可以通过tail  ...

  2. jProfiler远程连接Linux监控jvm、tomcat运行状态

    第一步.下载软件 官网地址:https://www.ej-technologies.com/download/jprofiler/files , Mac客户端 GUI界面 Linux服务端 第二步.安 ...

  3. 部署tomcat在windows服务器下,将tomcat控制台日志记录到日志文件中

    在Linux系统中,Tomcat 启动后默认将很多信息都写入到 catalina.out 文件中,我们可以通过tail  -f  catalina.out 来跟踪Tomcat 和相关应用运行的情况. ...

  4. 【zabbix】Windows服务器获取IIS站点以及程序池状态

    在使用zabbix做Windows服务器监控的时候遇到一个比较棘手的问题,检测IIS站点状态. 普通情况下,只要用浏览器访问iis站点测试一下返回码是不是200即可判断状态,但是我这次遇到的是iis使 ...

  5. 快速搭建windows服务器的可视化运维环境

    开发好的程序部署在服务器上,如何对服务器的基本指标进行监控呢?最近对一套工具进行了研究,可以快速搭建服务器监管环境,很是强大,最重要的是它还很酷炫. 原理:数据采集+时序数据库+可视化,下面记录一下搭 ...

  6. Nagios 监控Windows服务器(详细篇)

    1. 监控内容 windows服务器的内部参数包括以下 a. 内存使用状况 b. CPU负载 c. 磁盘使用状况 d. 服务状态 e. 运行的进程 2. 监控原理 在windows服务器内安装NSCl ...

  7. cacti监控windows服务器

    参考文献: 通​过​C​a​c​t​i​监​控​w​i​n​d​o​w​s​资​源 前提条件 一.已安装好Cacti:ubuntu下cacti安装配置 二.准备好以下安装文件: Cacti_SNMP_ ...

  8. 【转】windows 7系统安装与配置Tomcat服务器环境

    原文链接: windows 7系统安装与配置Tomcat服务器环境 工具/原料 jdk-8u51-windows-x64(我的系统是64位系统,32位的请选x86下载)下载地址:http://www. ...

  9. 外网zabbix-server使用主动模式监控公司内网windows服务器

    外网zabbix-server使用主动模式监控公司内网windows服务器 1.Zabbix Agent active批量调整客户端为主动模式监控将Template OS Windows模板调整为主动 ...

随机推荐

  1. Centos系统备份

    使用root用户切换到根目录 然后,使用下面的命令备份完整的系统: tar cvpzf backup.tgz / --exclude=/proc --exclude=/lost+found --exc ...

  2. 改變iTunes備份路徑

    *** 在任意分區建立文件夾用來移動iTunes原有備份 *** 例如:move"c:\user\vhd\appdata\roaming\apple computer"全部到&qu ...

  3. Linux系统下ssh登陆很慢的解决办法

    很多的Linux用户发现连接上Linux服务器在输入用户名之后还要再等一下才能输入密码,时间过长了,现在小白与大家分享一下如何解决ssh登陆问题的问题,希望对您有所帮助. 1.我们平时登陆Linux服 ...

  4. 智能社区--HI3516C可视门禁研发出来咯

    铝壳.非常大气的外壳. 200W像素,HI3516C,携带server.创新的产品.欢迎交流:QQ237753582 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5u ...

  5. oracle 11g GRID 中 关于 OLR 须要知道的一些内容

     oracle 11g GRID 中 关于 OLR 须要知道的一些内容 1.检查olr 的状态: [root@vmrac1 ~]# ocrcheck -local Status of Oracle ...

  6. simple-framework(MaliSDK框架分析)

    simple-framework(Mali SDK框架分析) 1.全部的定义及实现放在同一个命名空间中.文件包括#include一般在命名空间的外面. 总的命名空间为namespace MaliSDK ...

  7. Python开发【1.4数据类型】

    1.数字 数字数据类型用于存储数值. 他们是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象. # 创建对象 var1 = 1 var2 = 2 # 删除对象 del var1 del ...

  8. java后台修改ZK页面的title

    Clients.evalJavaScript("document.title='"+basicDBObject.getString("systemName")+ ...

  9. Flask中的ThreadLocal本地线程,上下文管理

    先说一下和flask没有关系的: 我们都知道线程是由进程创建出来的,CPU实际执行的也是线程,那么线程其实是没有自己独有的内存空间的,所有的线程共享进程的资源和空间,共享就会有冲突,对于多线程对同一块 ...

  10. 12. Ext.Ajax 对ajax的支持

    转自:http://www.cnblogs.com/lipan/archive/2011/12/09/2272793.html 本篇主要介绍一下ExtJs常用的几个对JS语法的扩展支持,包括Ajax封 ...