1. 程式人生 > >無限嘗試重啟次數並在前三次進行告警2小時後輪詢腳本

無限嘗試重啟次數並在前三次進行告警2小時後輪詢腳本

shell

#!/bin/bash

##1.當tomcat沒在運行時執行重啟並前三次重啟告警

##2.三次告警後會繼續執行重啟tomcat,但不在告警

##3.每兩個小時候後會重復 1 2 動作

export.utf8

IP=`/sbin/ip add|grep "inet" |sed -n '3p'|awk -F "/" '{print $1}'|awk '{print $2}'`

Host=`hostnam`

Tag="tomcat is down"

Starting="starting tomcat ..."

Starting_pid="tomcat start success...PID is"

Start_failed="tomcat start failed..."

echo `date +%s -d +2hour` >/tmp/unix_date

Tomcat_Path=/usr/local/tomcat-yitihua/bin

pid=`ps aux |grep $Tomcat_Path|grep -v grep |awk '{print $2}'`

id=`ps aux |grep $Tomcat_Path|grep -v grep|wc -l`

Id_file=/tmp/Id_wc.log

LogFile=/var/log/yitihua.log

TmpLog=/tmp/yitihua.log

[email protected]


function Mail(){

echo "------------ `date +'%Y-%m-%d %H:%M:%S'` start ------------" >> $LogFile

echo "$IP $Host $Tag" >> $LogFile

echo $Starting >> $LogFile

./startup.sh

sleep 5

pid=`ps aux |grep $Tomcat_Path|grep -v grep |awk '{print $2}'`

id=`ps aux |grep $Tomcat_Path|grep -v grep|wc -l`

echo $pid >> $Id_file

Id_wc=`cat $Id_file |wc -l`

if [ $id -ne 0 ];then

echo "$Starting_pid $pid" >> $LogFile

echo "============ `date +'%Y-%m-%d %H:%M:%S'` end ==============" >> $LogFile

sed ':a;N;$!ba;s/.*\n\(.*start -.*\)=/\1/' $LogFile > $TmpLog

cat $TmpLog | mail -s "$IP $Host $Tag 第$Id_wc告警" $MailTo

echo -e "\n" >> $LogFile

else

echo "$Start_failed" >> $LogFile

echo "============ `date +'%Y-%m-%d %H:%M:%S'` end ==============" >> $LogFile

sed ':a;N;$!ba;s/.*\n\(.*start -.*\)=/\1/' $LogFile > $TmpLog

cat $TmpLog | mail -s "$IP $Host $Tag 第$Id_wc告警" $MailTo

echo -e "\n" >> $LogFile

fi

}

function No_mail(){

echo "------------ `date +'%Y-%m-%d %H:%M:%S'` start ------------" >> $LogFile

echo "$IP $Host $Tag" >> $LogFile

echo "starting tomcat ..." >> $LogFile

./startup.sh

sleep 5

pid=`ps aux |grep $Tomcat_Path|grep -v grep |awk '{print $2}'`

id=`ps aux |grep $Tomcat_Path|grep -v grep|wc -l`

echo $pid >> $Id_file

if [ $id -ne 0 ];then

echo "$Starting_pid $pid" >> $LogFile

echo "============ `date +'%Y-%m-%d %H:%M:%S'` end ==============" >> $LogFile

echo -e "\n" >> $LogFile

else

echo "$Start_failed" >> $LogFile

echo "============ `date +'%Y-%m-%d %H:%M:%S'` end ==============" >> $LogFile

echo -e "\n" >> $LogFile

fi

}


main(){

while true;

do

sleep 1

cd $Tomcat_Path

id=`ps aux |grep $Tomcat_Path|grep -v grep|wc -l`

Id_wc=`cat $Id_file |wc -l`

if [ $id -eq 0 ];then

if [ $Id_wc -lt 3 ];then

Mail

elif [ $Id_wc -ge 3 ] ;then

DATE1=`cat /tmp/unix_date`

DATE2=`date +%s`

if [ $DATE2 -lt $DATE1 ];then

No_mail

elif [ $DATE2 -ge $DATE1 ] ;then

>$Id_file

echo `date +%s -d +2hour`>/tmp/unix_date

Mail

fi

fi

fi

done

}

main


無限嘗試重啟次數並在前三次進行告警2小時後輪詢腳本