Tomcat自动重启脚本
参照网上的脚本结合自己的实际环境写的一段tomcat自动重启的脚本,判断当tomcat对cpu的使用率超过70%时就自动重启,记录一下[*]#!/bin/sh
[*] # func:自动监控tomcat脚本并且执行重启操作
[*] # author:yaozhiyong
[*] # date:12/12/2012
[*] # 定义环境变量
[*] PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/java/jdk1.5.0_11/bin
[*] # 获取程序所在路径
[*]
[*] PRG="$0"
[*]
[*] while [ -h "$PRG" ]; do
[*] ls=`ls -ld "$PRG"`
[*] link=`expr "$ls" : '.*-> \(.*\)$'`
[*] if expr "$link" : '/.*' > /dev/null; then
[*] PRG="$link"
[*] else
[*] PRG=`dirname "$PRG"`/"$link"
[*] fi
[*] done
[*]
[*] # Get standard environment variables
[*] PRGDIR=`dirname "$PRG"`
[*]
[*] # Only set CATALINA_HOME if not already set
[*] [ -z "$TOMCAT_HOME" ] && TOMCAT_HOME=`cd "$PRGDIR/.." >/dev/null; pwd`
[*] echo "tomcathome: $TOMCAT_HOME"
[*]
[*] # 获取tomcat进程ID
[*] TomcatPID=$(ps -ef|grep java|grep "$TOMCAT_HOME"|awk '{print $2}')
[*] echo "TomcatPID: $TomcatPID"
[*] # tomcat启动程序(这里注意tomcat实际安装的路径)
[*] StartTomcat=$TOMCAT_HOME/bin/startup.sh
[*] TomcatCache=$TOMCAT_HOME/work
[*] # 定义要监控的页面地址
[*] WebUrl=http://127.0.0.1:8080/monitor.jsp
[*] # 日志输出
[*] GetPageInfo=/tmp/TomcatMonitor.Info
[*] TomcatMonitorLog=/tmp/TomcatMonitor.log
[*] TomcatCpuCount=/tmp/TomcatCpuCount.info
[*] TomcatLock=/tmp/Tomcat.lock
[*] MonitorHttp()
[*] {
[*] echo "开始监控tomcat...[$(date +'%F %H:%M:%S')]"
[*] if [ $TomcatPID ];then# 这里判断TOMCAT进程是否存在
[*] echo "当前tomcat进程ID为:$TomcatPID,继续检测页面..."
[*] # 检测是否启动成功(成功的话页面会返回状态"200")
[*] TomcatServiceTime=$(curl -s -o $GetPageInfo -m 10 --connect-timeout 10 $WebUrl -w %{time_total})
[*] if [ TomcatServiceTime -eq 200 ];then
[*] echo "页面返回码为$TomcatServiceCode,tomcat启动成功,测试页面正常......"
[*] else
[*] echo "tomcat页面出错,请注意......状态码为$TomcatServiceCode,错误日志已输出到$GetPageInfo"
[*] echo "页面访问出错,开始重启tomcat"
[*] kill -9 $TomcatPID # 杀掉原tomcat进程
[*] sleep 3
[*] rm -rf $TomcatCache # 清理tomcat缓存
[*] $StartTomcat
[*] fi
[*] else
[*] echo "tomcat进程不存在!tomcat开始自动重启..."
[*] echo "$StartTomcat,请稍候......"
[*] rm -rf $TomcatCache
[*] $StartTomcat
[*] fi
[*] echo "------------------------------"
[*] }
[*]
[*] MonitorCPU()
[*] {
[*] echo "开始监控tomcat...[$(date +'%F %H:%M:%S')]"
[*] if [ $TomcatPID ];then# 这里判断TOMCAT进程是否存在
[*]
[*] TomcatCpuRate=$(top -b -n1 |awk '{if($1=='$TomcatPID')print $9}')
[*] echo "当前tomcat进程ID为:$TomcatPID,CPU使用率为 $TomcatCpuRate %..."
[*]
[*] TomcatCpuState=$(echo $TomcatCpuRate|awk -v bi=70 '{print($1>bi)?"1":"0"}')
[*]
[*] echo "cpustate $TomcatCpuState"
[*]
[*] if [ $TomcatCpuState -eq 1 ]; then
[*] if [ -e $TomcatCpuCount ]; then
[*] tmpCount=$(cat $TomcatCpuCount |awk '{print $1+1}')
[*] echo " [$(date +'%F %H:%M:%S')] tomcat运行异常 CPU:$TomcatCpuRate 累计$tmpCount次"
[*] echo $tmpCount >$TomcatCpuCount
[*] else
[*] echo " [$(date +'%F %H:%M:%S')] tomcat运行异常 CPU:$TomcatCpuRate 累计1次"
[*] echo "1" >$TomcatCpuCount
[*] fi
[*] else
[*] echo " [$(date +'%F %H:%M:%S')] tomcat运行正常......"
[*] echo "0" >$TomcatCpuCount
[*] fi
[*]
[*] TomcatErrCount=$(cat $TomcatCpuCount|awk '{print $1}');
[*] echo " TomcatErrCount=$TomcatErrCount"
[*]
[*] if [ $TomcatErrCount -ge 3 ]; then
[*] echo "tomcat造成cpu负荷太重,需要要重启"
[*] echo " [$(date +'%F %H:%M:%S')] 开始重启tomcat"
[*] if [ -e $TomcatLock ];then
[*] echo "tomcat 正在重启..."
[*] else
[*] echo "restarting..." >$TomcatLock
[*] kill -9 $TomcatPID # 杀掉原tomcat进程
[*] sleep 3
[*] rm -rf $TomcatCache # 清理tomcat缓存
[*] $StartTomcat
[*] sleep 1m
[*] echo "0" >$TomcatCpuCount
[*] rm -rf $TomcatLock
[*] echo "tomcat 完成重启..."
[*]
[*] fi
[*] fi
[*]
[*] else
[*] echo "tomcat进程不存在!tomcat开始自动重启..."
[*] echo "$StartTomcat,请稍候......"
[*] rm -rf $TomcatCache
[*] $StartTomcat
[*] fi
[*] echo "------------------------------"
[*] }
[*]
[*] MonitorCPU >>$TomcatMonitorLog
[*]
页:
[1]