设为首页 收藏本站
查看: 693|回复: 0

[经验分享] Tomcat自动重启脚本

[复制链接]

尚未签到

发表于 2018-12-2 06:25:18 | 显示全部楼层 |阅读模式
  参照网上的脚本结合自己的实际环境写的一段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 "[info]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 "[info]开始监控tomcat...[$(date +'%F %H:%M:%S')]"
  •    if [ $TomcatPID ];then  # 这里判断TOMCAT进程是否存在
  •       echo "[info]当前tomcat进程ID为:$TomcatPID,继续检测页面..."
  •       # 检测是否启动成功(成功的话页面会返回状态"200")
  •       TomcatServiceTime=$(curl -s -o $GetPageInfo -m 10 --connect-timeout 10 $WebUrl -w %{time_total})
  •       if [ TomcatServiceTime -eq 200 ];then
  •          echo "[info]页面返回码为$TomcatServiceCode,tomcat启动成功,测试页面正常......"
  •       else
  •          echo "[error]tomcat页面出错,请注意......状态码为$TomcatServiceCode,错误日志已输出到$GetPageInfo"
  •          echo "[error]页面访问出错,开始重启tomcat"
  •          kill -9 $TomcatPID   # 杀掉原tomcat进程
  •          sleep 3
  •          rm -rf $TomcatCache # 清理tomcat缓存
  •          $StartTomcat
  •       fi
  •    else
  •       echo "[error]tomcat进程不存在!tomcat开始自动重启..."
  •       echo "[info]$StartTomcat,请稍候......"
  •       rm -rf $TomcatCache
  •       $StartTomcat  
  •    fi
  •    echo "------------------------------"
  • }
  •   
  • MonitorCPU()
  • {
  •    echo "[info]开始监控tomcat...[$(date +'%F %H:%M:%S')]"
  •    if [ $TomcatPID ];then  # 这里判断TOMCAT进程是否存在
  •       
  •       TomcatCpuRate=$(top -b -n1 |awk '{if($1=='$TomcatPID')print $9}')
  •       echo "[info]当前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 "[warning] [$(date +'%F %H:%M:%S')] tomcat运行异常 CPU:$TomcatCpuRate 累计$tmpCount次"
  •              echo $tmpCount >$TomcatCpuCount
  •           else
  •              echo "[warning] [$(date +'%F %H:%M:%S')] tomcat运行异常 CPU:$TomcatCpuRate 累计1次"
  •              echo "1" >$TomcatCpuCount
  •           fi
  •       else
  •           echo "[info] [$(date +'%F %H:%M:%S')] tomcat运行正常......"
  •           echo "0" >$TomcatCpuCount
  •       fi
  •       
  •       TomcatErrCount=$(cat $TomcatCpuCount|awk '{print $1}');
  •       echo "[print] TomcatErrCount=$TomcatErrCount"
  •       
  •       if [ $TomcatErrCount -ge 3 ]; then
  •          echo "[error]tomcat造成cpu负荷太重,需要要重启"
  •          echo "[error] [$(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 "[error]tomcat进程不存在!tomcat开始自动重启..."
  •       echo "[info]$StartTomcat,请稍候......"
  •       rm -rf $TomcatCache
  •       $StartTomcat  
  •    fi
  •    echo "------------------------------"
  • }
  •   
  • MonitorCPU >>$TomcatMonitorLog
  •   





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-642093-1-1.html 上篇帖子: Java VisualVM对tomcat性能监控 下篇帖子: Tomcat简介及组成介绍(1)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表