我做的一个监控并自动重启tomcat的脚本

公司的tomcat存在内存泄露的问题,偏偏程序员们也没时间去debug,当时我正好在研究shell脚本,就用shell写了如下内容:
首先,我不太懂tomcat,所以请java程序员写了一个web页面监控tomcat的状态,当tomcat空闲内存太少的时候,web页面的“LessOfMemory”字段就会消失,然后根据这个来判断是否应该重启tomcat。
正文如下:
#!/bin/bash
#Program
#       yong lai  jian shi  tomcat shi fou  si  diao .ru guo si le  jiu chong qi  ta  .
#History
#2009/1/5       Caoyameng       Version 1.0

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin:/usr/local/tomcat/bin
export PATH
#PATH里加入了tomcat的路径

test -e "status.jsp"  && rm -f  status.jsp;
#检测当前目录下是否有监控用的web文件存在,存在则删除。
wget  -b "http://127.0.0.1/main/status.jsp"
#下载这个页面,加-b的参数是为了让wget后台下载。
#之所以设置后台下载,是考虑到一种及其罕见的情况,如果cpu占用量100%或者端口阻塞,10分钟乃至1个小时都下载不下来这个页面,那整个监控脚本岂不是要卡在这里不动了?
sleep 3
#延时三秒,给wget下载页面的时间

tom=`cat status.jsp |grep LessOfMemory`
#设置一个变量为tom。
if 
          [ "$tom" == ""  ] ;then

sh /opt/tomcat/bin/shutdown.sh
#如果tom变量为空,则执行tomcatshutdown程序
date >>time.txt
#将shutdown的时间计入日志。
elif
                [ "$tom" != "" ] ;then
                exit 0
#如果tom不为空,则说明该web页面含有LessOfMemory字段,tomcat工作正常,退出shell脚本。
fi

sleep 3
#延时三秒,给tomcat自己结束自己的时间

tompid=`ps x | grep tomcat | grep -v grep|awk '{print $1}'`

#看一下tomcat进程是否还存在?如果存在,则将其PID号赋值给tompid变量

[ -z "$tompid" ] && kill -9  $tompid ;
#如果tompid不为空,则执行kill -9命令强行结束tomcat
Date >> time2.txt
#将系统时间写入第二个日志文件
sh  /opt/tomcat/bin/startup.sh
#重启tomcat。

你可能感兴趣的:(tomcat,Web,jsp,脚本,bash)