定時檢查進程的shell腳本

#!/bin/bash
#TIME=18:32
#while [ 1 -eq 1 ]
#do
#TMP=`date +'%H:%M'`
#echo $TMP $TIME
#if [ "$TMP" = "$TIME" ]
#then
#echo "時間到了,開始執行程序"
#break
#fi
#sleep 1
#done
lryDir=/settle1/card2/script/lry
echo "每隔5分鐘檢查一次進程"
lrynow=`date +%Y%m%d`
if [ -f $lryDir/Log/log_check_$lrynow ]
then
echo "文件已經存在,採用追加方式"
>> $lryDir/Log/log_check_$lrynow
echo "`date +%T` :文件已經存在,採用追加方式" | tee -a $lryDir/Log/log_check_$lrynow
else
> $lryDir/Log/log_check_$lrynow
echo "`date +%T` :新建日誌文件log_check_$lrynow" | tee -a $lryDir/Log/log_check_$lrynow
fi
echo "每隔5分鐘檢查一次進程" |tee -a $lryDir/Log/log_check_$lrynow
TIME=0900
checkcard_ps()
{
checkps=$1
if [ $checkps = Standserver ]
then
echo "`date +%T` : 當前進程爲:$checkps"
fi
status=`pscard | grep $checkps | wc -l`
#echo $status
if [ $status == 0 ]
then
echo "`date +%T`的時候:$checkps進程掛掉了,準備運行$checkps" | tee -a $lryDir/Log/log_check_$lrynow
cd /settle1/card2/bin
nohup $checkps &
echo $?
if [ $? -eq 0 ]
then
echo "`date +%T`時候:程序$checkps啓動成功" | tee -a $lryDir/Log/log_check_$lrynow
sleep 60
if [ $checkps = Standserver ]
then
echo "!!!!!!`date +%T`時候:準備修改配置文件" | tee -a $lryDir/Log/log_check_$lrynow
cat /settle1/card2/script/lry/lryconfig > /settle1/card2/bin/config.ini
echo "!!!!!!`date +%T`時候:配置文件修改完畢" | tee -a $lryDir/Log/log_check_$lrynow
fi 
fi
sleep 5
else
echo "`date +%T` : $checkps正常運行"
sleep 1
fi
}
echo "`date +%T` : $lrynow開始執行檢查進程程序" | tee -a $lryDir/Log/log_check_$lrynow
while [ 1 -eq 1 ]
do
TMP=`date +'%H%M'`
for lryps in SettleAgent Standserver Cardcollect Statserver Import Billserver osagent Msgserver
do
echo "$lryps"
checkcard_ps $lryps
done
echo "`date +%T` : 檢查完畢"
echo $TMP
echo $TIME
if [ "$TMP" -gt "$TIME" ]
then
echo "`date +%T` : 時間到了,退出程序" | tee -a $lryDir/Log/log_check_$lrynow
break
fi
sleep 291
done

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章