1. 程式人生 > >Linux下使用shell指令碼自動監控重啟tomcat

Linux下使用shell指令碼自動監控重啟tomcat

自己親自重新寫了一份shell指令碼,實現自動監控重啟tomcat。

系統環境:CentOS 6.7 x86_64

jdk版本:1.7.0_80

tomcat版本:7.0.70

# ---------------------------------------------------------------------- #
# shell自動監控重啟tomcat指令碼
# 思路是這樣的:先檢測tomcat程序是否存在,如果不存在就啟動,如果程序存在,檢測頁面返回碼狀態,如果是200就是正常,如果不是就重啟。
# 測試OK後把指令碼加入到crontab。
# ---------------------------------------------------------------------- #

#!/bin/sh
# 定義環境變數
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/jdk1.7.0_80/bin
export JAVA_HOME=/usr/local/jdk1.7.0_80
export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

# DEFINE

# 獲取tomcat程序ID
TomcatID=$(ps -ef |grep tomcat |grep -w 'apache-tomcat-7.0.70'|grep -v 'grep'|awk '{print $2}')

# tomcat啟動程式(這裡注意tomcat實際安裝的路徑)
StartTomcat=/usr/local/apache-tomcat-7.0.70/bin/startup.sh
TomcatCache=/usr/local/apache-tomcat-7.0.70/work

# 定義要監控的頁面地址 
WebUrl=http://localhost:8080

# 日誌輸出
GetPageInfo=/usr/local/demo/shell/TomcatMonitor.Info
TomcatMonitorLog=/usr/local/demo/shell/TomcatMonitor.log

Monitor () {
  echo "[info] 開始監控tomcat...[$(date +'%F %H:%M:%S')]"
  if [ $TomcatID ];then  # 這裡判斷TOMCAT程序是否存在
     echo "[info] 當前tomcat程序ID為:$TomcatID,繼續檢測頁面..."
     # 檢測是否啟動成功(成功的話頁面會返回狀態"200")
     TomcatServiceCode=$(curl -s -o $GetPageInfo -m 10 --connect-timeout 10 $WebUrl -w %{http_code})
     if [ $TomcatServiceCode -eq 200 ];then
        echo "[info] 頁面返回碼為$TomcatServiceCode,tomcat啟動成功,測試頁面正常..."
     else
        echo "[error] tomcat頁面出錯,請注意...狀態碼為$TomcatServiceCode,錯誤日誌已輸出到$GetPageInfo"
        echo "[error] 頁面訪問出錯,開始重啟tomcat"
        kill -9 $TomcatID   # 殺掉原tomcat程序
        sleep 3
        rm -rf $TomcatCache # 清理tomcat快取
        $StartTomcat
     fi
  else
     echo "[error]tomcat程序不存在!tomcat開始自動重啟..."
     echo "[info]$StartTomcat,請稍候..."
     rm -rf $TomcatCache
     $StartTomcat
  fi
  echo "----------------------------------------------------------------------"
}

Monitor >> $TomcatMonitorLog