該指令碼建議放在tomcat所在Linux伺服器上,建立/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 java|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