sdchy 发表于 2018-12-2 06:25:18

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]
查看完整版本: Tomcat自动重启脚本