shell腳本實(shí)現(xiàn)定時(shí)檢查應(yīng)用狀態(tài)步驟
引言
有時(shí)候,我們掛在服務(wù)器上的應(yīng)用會(huì)因?yàn)橐恍┨厥馇闆r掛掉,致使項(xiàng)目經(jīng)理又對(duì)我們說(shuō):又掛了!趕緊去看看!
于是有了以下腳本,使用shellll編寫(xiě),用于定時(shí)檢查應(yīng)用情況,掛掉則重啟。 這里以tomcat為例。
步驟
根據(jù)以下步驟即可實(shí)現(xiàn):
1.創(chuàng)建并編輯腳本
vim test.sh
2.復(fù)制以下腳本內(nèi)容至.sh文件中
#自動(dòng)檢測(cè)某個(gè)tomcat狀態(tài)(w精確匹配 v去除某種進(jìn)程 awk數(shù)據(jù)處理 print $2 打印第二列) TomcatID=$(ps -ef |grep -w 'apache-tomcat-7.0.81'|grep -v 'grep'|awk '{print $2}') # tomcat啟動(dòng)程序(這里注意tomcat實(shí)際安裝的路徑) StartTomcat=/usr/local/apache-tomcat-7.0.81/bin/startup.sh TomcatCache=/usr/local/apache-tomcat-7.0.81/work # 定義要監(jiān)控的頁(yè)面地址,建議跟上具體項(xiàng)目xxx ,建議 具體到某個(gè)頁(yè)面或接口 TomcatUrl=http://localhost:8080 # 日志輸出,根據(jù)實(shí)際情況設(shè)置路徑,并創(chuàng)建文本 #頁(yè)面日志 GetPageInfo=/usr/local/zhangwk/logs/tomcatMonitorPage.info #tomcat進(jìn)程日志 TomcatMonitorLog=/usr/local/zhangwk/logs/tomcatMonitor.log MonitorTomcat() { echo "[info]開(kāi)始監(jiān)控tomcat...[$(date +'%F %H:%M:%S')]" if [ $TomcatID ];then # 這里判斷TOMCAT進(jìn)程是否存在 echo "[info]當(dāng)前tomcat進(jìn)程ID為:$TomcatID,繼續(xù)檢測(cè)頁(yè)面..." # 檢測(cè)是否啟動(dòng)成功(成功的話頁(yè)面會(huì)返回狀態(tài)"200") TomcatServiceCode=$(curl -s -o $GetPageInfo -m 10 --connect-timeout 10 $TomcatUrl -w %{http_code}) if [ $TomcatServiceCode -eq 200 ];then echo "[info]頁(yè)面返回碼為$TomcatServiceCode,tomcat啟動(dòng)成功,測(cè)試頁(yè)面正常......" else echo "[error]tomcat頁(yè)面出錯(cuò),請(qǐng)注意......狀態(tài)碼為$TomcatServiceCode,錯(cuò)誤日志已輸出到$GetPageInfo" echo "[error]頁(yè)面訪問(wèn)出錯(cuò),開(kāi)始重啟tomcat" kill -9 $TomcatID # 殺掉原tomcat進(jìn)程 sleep 3 rm -rf $TomcatCache # 清理tomcat緩存 $StartTomcat # 啟動(dòng)tomcat fi else echo "[error]tomcat進(jìn)程不存在!tomcat開(kāi)始自動(dòng)重啟..." echo "[info]$StartTomcat,請(qǐng)稍候......" rm -rf $TomcatCache # 清理tomcat緩存 $StartTomcat # 啟動(dòng)tomcat fi echo "------------------------------" } MonitorTomcat >>$TomcatMonitorLog
3.對(duì)該腳本賦予執(zhí)行權(quán)限
chmod +x test.sh
4.測(cè)試腳本是否報(bào)錯(cuò)
sh test.sh
若無(wú)任何輸出,則說(shuō)明該腳本無(wú)錯(cuò)誤
5.設(shè)置linux定時(shí)器
進(jìn)入定時(shí)器編輯
crontab -e
添加以下文本
*/5 * * * * /usr/local/zhangwk/test.sh
保存退出
注:根據(jù)腳本實(shí)際路徑填寫(xiě),這里的意思是每隔五分鐘執(zhí)行一次
以上就是shell腳本實(shí)現(xiàn)定時(shí)檢查應(yīng)用狀態(tài)的詳細(xì)內(nèi)容,更多關(guān)于shell腳本定時(shí)檢查應(yīng)用狀態(tài)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
shell腳本實(shí)現(xiàn)輸入密碼顯示星號(hào)
本文給大家分享使用shell腳本實(shí)現(xiàn)輸入密碼顯示星號(hào)的腳本寫(xiě)法,在文章末尾給大家補(bǔ)充了shell輸入密碼時(shí)關(guān)閉屏幕回顯的實(shí)現(xiàn)方法,需要的朋友參考下吧2017-01-01linux shell中單引號(hào)、雙引號(hào)、反引號(hào)、反斜杠的區(qū)別
shell可以識(shí)別4種不同類型的引字符號(hào): 單引號(hào)字符' 雙引號(hào)字符" 反斜杠字符\ 反引號(hào)字符`的區(qū)別,學(xué)習(xí)shell編程的朋友可以看下2013-01-01Shell中的for和while循環(huán)詳細(xì)總結(jié)
這篇文章主要介紹了Shell中的for和while循環(huán)詳細(xì)總結(jié),本文講解了for循環(huán)的數(shù)字段形式、詳細(xì)列出、對(duì)文件進(jìn)行循環(huán),while循環(huán)的三種使用場(chǎng)合等內(nèi)容,需要的朋友可以參考下2015-05-05Shell腳本實(shí)現(xiàn)隨機(jī)數(shù)多種方法介紹(date、random、uuid)
這篇文章主要介紹了Shell腳本實(shí)現(xiàn)隨機(jī)數(shù)多種方法介紹,本文講解了通過(guò)時(shí)間獲得隨機(jī)數(shù)、通過(guò)內(nèi)部系統(tǒng)變量、通過(guò)系統(tǒng)內(nèi)部唯一數(shù)據(jù)生成隨機(jī)數(shù)等方法,需要的朋友可以參考下2014-11-11詳解systemctl?和?service?區(qū)別及命令
systemctl和service都是管理Linux系統(tǒng)服務(wù)的工具,但systemctl更加先進(jìn),可以方便地管理systemd服務(wù),而service適用于管理傳統(tǒng)的SysV服務(wù),這篇文章主要介紹了systemctl和service區(qū)別及命令,需要的朋友可以參考下2023-07-07