shell腳本實(shí)現(xiàn)定時(shí)檢查應(yīng)用狀態(tài)步驟
引言
有時(shí)候,我們掛在服務(wù)器上的應(yīng)用會(huì)因?yàn)橐恍┨厥馇闆r掛掉,致使項(xiàng)目經(jīng)理又對(duì)我們說:又掛了!趕緊去看看!
于是有了以下腳本,使用shellll編寫,用于定時(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)控的頁面地址,建議跟上具體項(xiàng)目xxx ,建議 具體到某個(gè)頁面或接口
TomcatUrl=http://localhost:8080
# 日志輸出,根據(jù)實(shí)際情況設(shè)置路徑,并創(chuàng)建文本
#頁面日志
GetPageInfo=/usr/local/zhangwk/logs/tomcatMonitorPage.info
#tomcat進(jìn)程日志
TomcatMonitorLog=/usr/local/zhangwk/logs/tomcatMonitor.log
MonitorTomcat()
{
echo "[info]開始監(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è)頁面..."
# 檢測(cè)是否啟動(dòng)成功(成功的話頁面會(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]頁面返回碼為$TomcatServiceCode,tomcat啟動(dòng)成功,測(cè)試頁面正常......"
else
echo "[error]tomcat頁面出錯(cuò),請(qǐng)注意......狀態(tài)碼為$TomcatServiceCode,錯(cuò)誤日志已輸出到$GetPageInfo"
echo "[error]頁面訪問出錯(cuò),開始重啟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開始自動(dòng)重啟..."
echo "[info]$StartTomcat,請(qǐng)稍候......"
rm -rf $TomcatCache # 清理tomcat緩存
$StartTomcat # 啟動(dòng)tomcat
fi
echo "------------------------------"
}
MonitorTomcat >>$TomcatMonitorLog3.對(duì)該腳本賦予執(zhí)行權(quán)限
chmod +x test.sh
4.測(cè)試腳本是否報(bào)錯(cuò)
sh test.sh
若無任何輸出,則說明該腳本無錯(cuò)誤
5.設(shè)置linux定時(shí)器
進(jìn)入定時(shí)器編輯
crontab -e
添加以下文本
*/5 * * * * /usr/local/zhangwk/test.sh
保存退出
注:根據(jù)腳本實(shí)際路徑填寫,這里的意思是每隔五分鐘執(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ù)學(xué)運(yùn)算實(shí)例
這篇文章主要介紹了Shell腳本編程中常用的數(shù)學(xué)運(yùn)算實(shí)例,包含最基本的加減乘除,還有質(zhì)數(shù)、偶數(shù)的判斷等,需要的朋友可以參考下2014-06-06
如何使用shell獲取進(jìn)程名的內(nèi)存以及CPU利用率
最近工作中遇到一個(gè)需求,需要找出占用高的進(jìn)程,所以下面這篇文章主要給大家介紹了關(guān)于如何使用shell獲取進(jìn)程名的內(nèi)存以及CPU利用率的相關(guān)資料,需要的朋友可以參考下2022-04-04
Linux中使用Shell腳本查看Java線程的CPU使用情況
這篇文章主要介紹了Linux中使用Shell腳本查看Java線程的CPU使用情況,需要的朋友可以參考下2014-06-06
nagios 分發(fā)文件實(shí)現(xiàn)代碼
這篇文章主要介紹了nagios 分發(fā)文件實(shí)現(xiàn)代碼,需要的朋友可以參考下2014-09-09
Shell腳本中判斷輸入變量或者參數(shù)是否為空的方法
這篇文章主要介紹了Shell腳本中判斷輸入變量或者參數(shù)是否為空的方法,本文總結(jié)了5種方法,并分別給出了代碼實(shí)例,需要的朋友可以參考下2014-10-10

