Linux下使用shell指令碼自動監控重啟tomcat
阿新 • • 發佈:2019-01-25
自己親自重新寫了一份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