Linux Tomcat自動檢測、重啟
客戶的機器有時遇見宕機的情況,雖然我在Linux服務器上配置了Tomcat自啟動程序,可以在機器重啟的時候自動部署web應用。但是,當數據庫服務器與Web應用服務器不能同時啟動的時候,Tomcat啟動項目就失敗了。最後,寫了shell腳本,來自動判斷是否有tomcat進程,如果沒有的話,就重啟tomcat,否則,不執行任何操作,並將tomcat啟動日志寫到文件裡。腳本如下:
Java代碼
#/bin/bash
#############################################
# author zhao yanan
# date 2010/08/23
# update 2011/01/10
# Automatic detection and restart tomcat
#############################################
#腳本可寫入到自動任務中,執行周期可根據tomcat起停時間長短來定,如下,每天0點到20點之間每隔10分鐘檢查一次
#echo "*/3 0-24 * * * root /root/script/tomcat_check.sh >> /root/script/tomcat_check.log 2>&1" >> /etc/crontab
echo ========================================
date
PROCESS_NUM=`ps -ef | grep tomcat | grep -v "grep" | wc -l`
if [ $PROCESS_NUM -lt 1 ]; then # 判斷是否有Tomcat進程,如果沒有,則執行接下來的任務,否則執行else後的任務。
# java Environment variables #設置jdk的環境變量,根據自已的實際情況設定
export JAVA_HOME=/usr/local/jdk1.6.0_25
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export CATALINA_HOME=/usr/local/tomcat
echo "restart tomcat."
${CATALINA_HOME}/bin/shutdown.sh #關閉tomcat
sleep 5 #等待tomcat關閉,一般是1~150s不等
kill -9 `ps aux|grep "/usr/local/tomcat"|grep -v grep|awk '{print $2}'` #等待時間結束後,償試強制結束tomcat進程
sleep 5
${CATALINA_HOME}/bin/catalina.sh run
sleep 5
else
echo "checked." #首頁下載成功,提示已檢查
fi