1.在服務器上創建一個腳本文件,我命名為tomcatMonitor.sh
編輯tomcatMonitor.sh文件,if及fi必須成對出現,如果if then寫在一行需要用;隔開
#!/bin/sh
# 獲取tomcat的PID
TOMCAT_PID=$(ps -ef|grep tomcat|grep -w 'tomcat'|grep -v 'grep'|awk '{print $2}')
# tomcat的啟動文件位置
START_TOMCAT=/usr/local/tomcat7/bin/startup.sh
# 需要監測的一個GET請求地址
MONITOR_URL=http://localhost:8080/
# 監測日志輸出路徑
TOMCAT_MONITOR_LOG=/usr/local/tomcat7/logs/tomcatMonitor.log
Monitor()
{
# 輸出時間,注意date后有個空格
echo "[$(date +'%F %H:%M:%S')]"
echo "[info]開始監控tomcat..."
# 判斷tomcat的PID是否存在,如不存在說明tomcat進程已關閉,注意[]前后,變量前后,都要有空格
if [[ $TOMCAT_PID ]];then
echo "[info]當前tomcat的PID為:$TOMCAT_PID,繼續監測頁面..."
# 向監測的地址發送請求並獲取響應碼
HTTP_REPONSE_STATUS=$(curl -l -m 10 -o /dev/null -s -w %{http_code} $MONITOR_URL)
# 如果響應碼為200證明tomcat在正常啟用
if [[ $HTTP_REPONSE_STATUS -eq 200 ]];then
echo "[info]tomcat啟動正常..."
else
echo "[error]頁面返回碼為$HTTP_REPONSE_STATUS,開始重啟tomcat..."
# 結束tomcat進程
kill -9 $TOMCAT_PID
# 5秒后重啟tomcat
sleep 5
$START_TOMCAT
fi
else
echo "[error]tomcat進程不存在,開始啟動..."
echo "[info]$START_TOMCAT,..."
$START_TOMCAT
fi
echo "監測執行完成"
}
# 輸出到指定文件中
Monitor>>$TOMCAT_MONITOR_LOG
2.編輯定時器
crontab -e
編輯定時器文件,設置每分鍾執行一次,加入如下代碼並保存
*/1 * * * * /root/tomcatMonitor.sh
輸入如下代碼可以看到tomcatManitor.sh已經在正常工作
vim /usr/local/tomcat7/logs/tomcatMonitor.log