前端之家收集整理的这篇文章主要介绍了
Shell 定时5分钟一次监控Tomcat状态,自动重启,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
公司测试服里有很多个tomcat,我参与的项目的那台tomcat,一天会挂上好几次。
监控系统一直发邮件,觉得实在烦,就写了个监控tomcat的脚本放上去跑。等过两天有空了再去研究tomcat挂掉的原因。
先贴上Shell代码:
- #!/bin/sh
- #function:自动监控tomcat进程,挂了就执行重启操作
- #author:huanghong
- #DEFINE
-
- #获取tomcatPPID
- TomcatID=$(ps-ef|greptomcat|grep-w'tomcat_cardniu_stat'|grep-v'grep'|awk'{print$2}')
-
- #tomcat_startup
- StartTomcat=/usr/local/tomcat-6.0.41/tomcat_cardniu_stat/bin/startup.sh
- #TomcatCache=/usr/apache-tomcat-5.5.23/work
- #定义要监控的页面地址
- WebUrl=http://test.cardniu.com/stat-cardniu/login
- #日志输出
- GetPageInfo=/dev/null
- TomcatMonitorLog=/tmp/TomcatMonitor.log
- Monitor()
- {
- echo"[info]开始监控tomcat...[$(date+'%F%H:%M:%S')]"
- if[$TomcatID];then
- echo"[info]tomcat进程ID为:$TomcatID."
- #获取返回状态码
- TomcatServiceCode=$(curl-s-o$GetPageInfo-m10--connect-timeout10$WebUrl-w%{http_code})
- if[$TomcatServiceCode-eq200];then
- echo"[info]返回码为$TomcatServiceCode,tomcat启动成功,页面正常."
- else
- echo"[error]访问出错,状态码为$TomcatServiceCode,错误日志已输出到$GetPageInfo"
- echo"[error]开始重启tomcat"
- kill-9$TomcatID#杀掉原tomcat进程
- sleep3
- #rm-rf$TomcatCache#清理tomcat缓存
- $StartTomcat
- fi
- echo"[error]进程不存在!tomcat自动重启..."
- echo"[info]$StartTomcat,请稍候......"
- #rm-rf$TomcatCache
- echo"------------------------------"
- }
- Monitor>>$TomcatMonitorLog
通过ps -ef 及 grep 命令定位到对应项目的tomcat,获取到进程ID。
GetPageInfo = /dev/null,无底洞,不输出。
先判断进程是否存在,不存在则重启,存在则进入状态判断,获取访问请求页的responseCode,不等于200的话也进行重启。
保存shell 名字为monitor.sh
然后在终端输入