該指令碼建議放在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