windows下实现tomcat监控并自动启动服务
应用场景:
windows运行tomcat服务,为了避免系统崩溃导致出现无法提供服务的情况,我们通过编辑相应的bat脚本,进行tomcat检测。进而实现项目监控并自动重启。
如果你所使用的服务器是linux,可以点击[Linux下实现tomcat线程监控并自启]进行设置。
下面是一个实现tomcat监控并重启的例子//echo off是批处理文件中的命令,可以使得下面的命令不在显示屏上面显示,前面加上@是为了使其本身不显示 @echo off //setlocal是批处理本地化的一种操作,在执行setlocal之后所做的环境改动只限于批处理文件 //ENABLEDELAYEDEXPANSION 启用变量延迟,直到出现匹配的endlocal命令 SETLOCAL ENABLEDELAYEDEXPANSION//rem的意思是注释 rem 链接 set URL="http://tal.com/cloudAISystem/" rem tomcat目录 set TOMCAT_HOME="C:\tomcat\apache-tomcat-8080" rem 关闭tomcat命令的路径 set CLOSE_CMD=net stop Tomcat8 rem 启动tomcat命令的路径 set START_CMD=net start Tomcat8 rem tomcat缓存目录 set TOMCAT_CACHE=%TOMCAT_HOME%\work rem 日志文件的路径 set LOG_PATH=%TOMCAT_HOME%\check.log rem 每次检测完后等待时间,再进行下一次检测,若将程序部署到系统计划任务,可忽略 set TIME_WAIT=30 rem 设置通知接口的工具程序 set NOTIFICATION_MESS="C:\Program Files\messagePush.exe"//echo string:将字符串显示在屏幕中 //:loop 和下面的goto组合成循环 :loop //设置变量http状态码 set httpcode=0 //打开tomcat目录 cd /d %TOMCAT_HOME% //打印时间 echo %date% %time% //在屏幕上打印执行状态 echo 'begin checking tomcat'//将记录保存在日志文件中 echo %date% %time% >>%LOG_PATH% //循环 //FOR [参数] %%变量名 IN (相关文件或命令)DO 执行的命令 //其中参数有/d /l /r /f //参数 /d (参数只能显示当前目录下的目录名字) //参数 /R (搜索指定路径及所有子目录中与set相符合的所有文件) //参数 /L (该集表示以增量形式从开始到结束的一个数字序列。可以使用负的 Step) //参数 /F (使用文件解析来处理命令输出、字符串及文件内容。) //(相关文件或命令)指定一个或一组文件。可以使用通配符 for /l %%i in (1,1,20) do ( echo %%i //借助工具获得项目的状态头(curl工具的安装会在下面提及) for /f "delims=" %%r in ('curl -sL -w "%%{http_code}" %URL% -o /dev/null') do ( //将变量r的值赋值给httpcode set httpcode=%%r if !httpcode!==200 ( GOTO :OUTFOR ) ) ):OUTFOR echo %httpcode% >>%LOG_PATH%if not %httpcode%==200 ( //不等于200,则发送启动发送短信的程序 start /min "" "C:\Program Files\crul\KXunOnlineState.exe" call %NOTIFICATION_MESS% echo close tomcat >>%LOG_PATH% //关闭tomcatcall在批处理中用于调用另一个批处理文件,start用于执行一些外部程序 start %CLOSE_CMD% timeout -t 10 >nul //记录日志 echo success to close tomcat >>%LOG_PATH% //清除tomcatwork空间 /s意思是不需要确认的删除/Q是清除目录及子目录 rd /S /Q %TOMCAT_CACHE% echo start tomcat >>%LOG_PATH% //开启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 若将脚本程序部署到系统计划程序中,将以下代码可注释 timeout -t %TIME_WAIT% >nul goto loop
总结:本文实现的总体思路与linux下的思想一致,检测项目是否正常访问,通过获取的结果头进行判断,如果访问失败,则再次尝试,知道循环结束还没有访问成功则重启服务。如果尝试成功,则直接跳出循环,实现下一次的访问。
本文用到一个命令curl,需要自己安装才能正确使用,否则回报异常:'curl' is not recognized as an internal or externalcommand, operable program or batch file.可自行下载安装使用。
快捷使用:
【windows下实现tomcat监控并自动启动服务】百度网盘下载:https://pan.baidu.com/s/1KSh7re8KjzzmqwIO10bbPA 密码:f3w3
文章图片
如果执行过程中出现如下错误:
文章图片
直接将脚本用记事本打开,保存ANSI脚本。因为批处理只支持ANSI脚本
参考博客:http://blog.csdn.net/xhhjin/article/details/7373524
https://www.cnblogs.com/Braveliu/p/5078283.html
http://www.jb51.net/article/29323.htm
推荐阅读
- 开学第一天(下)
- 【故障公告】周五下午的一次突发故障
- 生活随笔|好天气下的意外之喜
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- MybatisPlus使用queryWrapper如何实现复杂查询
- MongoDB,Wondows下免安装版|MongoDB,Wondows下免安装版 (简化版操作)
- 汇讲-勇于突破
- python学习之|python学习之 实现QQ自动发送消息
- Android中的AES加密-下
- 说的真好