Linux下實作監測tomcat是否宕機/停止并重新啟動功能
文章目錄
- Linux下實作監測tomcat是否宕機/停止并重新啟動功能
- 前言
- 一、安裝crontab
- 1.確認crontab是否安裝
- 2.安裝crontab
- 3.使用crontab
- 4.將crontab加入至開機自啟
- 二、編輯monitor.sh腳本
- 1.monitor.sh腳本模板
- 2.使用crontab來完成定時任務
前言
首先我們要知道實作該功能需要哪些準備作業
一、安裝crontab
Linux上的crontab是一個定時任務的工具,可以幫助你實作定時回圈執行某一個腳本的功能
1.確認crontab是否安裝
輸入命令列 crontab -l
如果報 “command not found” ,就說明該crontab服務沒有安裝 如果報 “no crontab for root” ,就說明已經安裝crontab服務了, 不用再安裝了
2.安裝crontab
依次輸入以下命令
yum install vixie-cron
yum install crontabs
3.使用crontab
說一下常用的幾個命令
service crontab start 啟動crontab服務
service crontab stop 停止crontab服務
service crontab reload 重啟crontab服務
service crontab status 查看crontab服務的狀態
crontab -e 編輯定時任務,這里給個模板,可以做一下修改:
*/1 * * * * /tmp/xxx/xxx.sh (這個代表每一分鐘執行一次,后面的是腳本的路徑,cron運算式可以去百度在線生成)
4.將crontab加入至開機自啟
使用命令ntsysv,鍵盤上下移動選擇,按空格選中或取消,按Tab可以切換游標到串列和確認取消上注意,這里如果有tomcat配置的自啟在保存后會自動變為取消,所以保存后需要去再設定一下tomcat的自啟,用命令chkconfig --add 腳本名稱 來完成tomcat自啟的配置
二、編輯monitor.sh腳本
1.monitor.sh腳本模板
代碼如下(示例):
#!/bin/sh
#tomcat監控腳本,記錄tomcat運行狀況,并在系統出現例外的時候重啟服務
# 獲取執行緒ID,執行該命令,可以得到tomcat執行緒,grep -w用于執行單詞搜索
TomcatID=$(ps -ef | grep java |grep tomcat |grep -w 'DataExchange'|grep -v 'grep'|awk '{print $2}')
. /etc/profile #此行必不可少,若少了,tomcat無法自動重啟
# tomcat啟動的腳本檔案,一般位于tomcat服務器bin目錄下面
StartTomcat=/usr/tomcat/xxx/bin/startup.sh
# 專案的一個方法,該方法只要能夠請求到,則回傳成功
WebUrl=http://localhost:8080/xxx
#tomcatwork空間
TomcatCache=/usr/tomcat/xxx/work
# 日志輸出地址
GetPageInfo=/dev/null
TomcatMonitorLog=/tmp/TomcatMonitor.log
#監控的代碼
Monitor()
{
#輸出到日志檔案,并將時間保存
echo "[info]開始監控tomcat...[$(date +'%F %H:%M:%S')]"
#查看tomcatID,如果存在,則進入處理邏輯,如果不存在,則重啟tomcat
if [ -n "$TomcatID" ];then
#記錄日志
echo "[info]tomcat行程ID為:$TomcatID."
# 請求專案,$WebUrl是相應的請求地址,該命令執行之后會得到相應的執行緒ID
TomcatServiceCode=$(curl -s -o $GetPageInfo -m 10 --connect-timeout 10 $WebUrl -w %{http_code})
#系統運行正常
if [ $TomcatServiceCode -eq 200 ];then
echo "[info]回傳碼為$TomcatServiceCode,tomcat運行正常."
else
#系統運行例外
echo "[error]訪問出錯,狀態碼為$TomcatServiceCode,錯誤日志已輸出到$GetPageInfo"
echo "[error]開始重啟tomcat"
#殺掉相應的行程
#kill -9 $TomcatID # 殺掉原tomcat行程
for id in $TomcatID
do
kill -9 $id # 殺掉原tomcat行程
echo "killed $id"
done
sleep 1
#清理work空間
rm -rf $TomcatCache # 清理tomcat快取
#重啟
$StartTomcat
echo "[info] tomcat開始重啟."
fi
else
echo "[error]行程不存在!tomcat自動重啟...$TomcatID"
echo "[info]$StartTomcat,請稍候......"
#rm -rf $TomcatCache
$StartTomcat
fi
echo "------------------------------"
}
Monitor>>$TomcatMonitorLog
腳本是我整合了網上一些零散的腳本并修改的,如有不對歡迎指出,一起學習,一起進步~
2.使用crontab來完成定時任務
這里可以先執行一下腳本看看有沒有作用,然后用上述的crontab -e的命令將腳本加入進去,然后執行service crontab reload,接著去看看日志輸出,看看有沒有完成功能
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/263731.html
標籤:其他
