Shell写的一个进程监视脚本

我3年前写的的一个程序。 整理文档时发现的。

用于监视一个进程的活动,记录它的内存,当它崩溃时往指定邮箱发信,并且自动重启该程序。

 

 #!/bin/bash ############## # USER INI # ############################################################ #Mail sender address mailfrom="[email protected]" #Mail list. Use "," to delimit every mail address. mailto="[email protected]" #The interval of memroy recording interval=3#The basic file name of recording memory fileBaseName="WatchProcessLog" ############### # MAIN SCRIPT # ############################################################ #set system signal trap OnInterrupt(){ kill $chpid echo "" echo "" echo "Received signal INTERRUPT!" echo "Kill process $PROGRAM(PID:$chpid)" echo "" exit } SendBeginMail(){ /usr/sbin/sendmail -t <> $fileName echo "VSZ RSS" >> $fileName echo `top -b -n 1 | grep $USER | grep $PROGRAM | awk '{ print $5" "$6 }'` >> $fileName MEMINFO=`top -b -n 1 | grep $USER | grep $PROGRAM | awk '{ print "VSZ:"$5" RSS:"$6 }'` SendBeginMail while [ 1 ] do sleep $interval counter=`ps -u $USER | grep $PROGRAM | grep $chpid | grep -v grep | wc -l` if [ $counter -eq 0 ]; then currentTime=`date +"%Y-%m-%d %H:%M:%S"` echo "Process is collapsed at $currentTime" >> $fileName echo "Process $PROGRAM(PID:$chpid) is not exist any more." echo "Will restart $PROGRAM in 5 secs." echo "" sleep 5 ./$PROGRAM $OPTION & chpid="$!"; currentTime=`date +"%Y-%m-%d %H:%M:%S"` echo "Memory record restart at $currentTime" echo "$PROGRAM has been restarted successfully." echo "${PROGRAM}'s new PID is $chpid ." echo "" else echo `top -b -n 1 | grep $USER | grep $PROGRAM | awk '{ print $5" "$6 }'` >> $fileName fi done

你可能感兴趣的:(Shell写的一个进程监视脚本)