該指令碼建議放在tomcat所在伺服器上,新建/root/script目錄,指令碼放在該目錄。
不過因網路、硬體或系統嚴重故障導致郵件無法通知。指令碼某些功能可以去除,放在其它伺服器僅做為監控或重啟Tomcat也可以。
#/bin/bash ############################################# # author zhao yanan # date 2010/08/23 # update 2011/01/10 # Automatic detection and restart tomcat ############################################# #指令碼可寫入到自動任務中,執行週期可根據tomcat起停時間長短來定,如下,每天0點到20點之間每隔10分鐘檢查一次 #echo "*/10 0-20 * * * root /root/script/tomcat_check.sh >> /root/script/tomcat_check.log 2>&1" >> /etc/crontab echo ======================================== date cd /root/script rm -f index.html #刪除之前已下載的首頁 wget -T 10 -t 3 -q http://XXX.XXX.XXX.XXX/index.html #下載首頁,失敗後最多償試3次,每次間隔10秒 if [ ! -e index.html ]; then #判斷首頁是否下載成功,如果失敗,則執行接下來的任務,否則執行else後的任務。 # java Environment variables #設定jdk的環境變數,根據自已的實際情況設定 export JAVA_HOME=/opt/jdk1.6.0_21 export CLASSPATH=.:$JAVA_HOME/lib/tools.jar export CATALINA_HOME=/opt/apache-tomcat-6.0.26 export PATH=$JAVA_HOME/bin:$PATH echo "restart tomcat." ${CATALINA_HOME}/bin/shutdown.sh #關閉tomcat sleep 150 #等待tomcat關閉,一般是1~150s不等 kill -9 `ps aux|grep "/usr/local/tomcat"|grep -v grep|awk `{print $2}`` #等待時間結束後,償試強制結束tomcat程式 sleep 5 ${CATALINA_HOME}/bin/startup.sh sleep 5 #等待tomcat啟動,一般是1~150s不等 /usr/sbin/sendmail -t <<EOF #傳送郵件通知,以下項前面請不要新增空格,生產使用時請刪除此註釋 From: web server <root@localhost> #郵件發件人,生產使用時請刪除此註釋 To: username@gmail.com #主送郵件地址,注意,大部分郵件接收伺服器不接受沒有fully-qualified的郵件,一般會失敗,生產使用時請刪除此註釋 Cc: username@gmail.com #抄送郵件地址,生產使用時請刪除此註釋 Subject: Alarm:tomcat restart #郵件標題,生產使用時請刪除此註釋 ---------------------------------- #郵件內容,生產使用時請刪除此註釋 In just restarted tomcat. ---------------------------------- EOF #該符號前面不能有空格,生產使用時請刪除此註釋 else echo "checked." #首頁下載成功,提示已檢查 fi
附件中的指令碼檔案是有DOS換行符(CR/LF)的,複製檔案中的內容到SSH客戶端沒有問題,如果直接拷貝檔案到Linux系統中,可先執行下面的命令:
mv example_tomcat_check.txt example_tomcat_check.sh
dos2unix example_tomcat_check.sh
原文:http://www.zhaoyanan.cn/linux-tomcat-automatically-detect-and-restart-script.html