(1)监控服务进程的端口,当服务进程的端口不通时,自动重启服务进程。这个需要该服务进程始终监听某一特殊端口,并当服务停止或不能正常提供服务时。
脚本样例,监控jboss服务器的8080端口,当该端口不通时,自动重启jboss服务器。
#!/bin/sh<br /> netstat -an|grep -q 8080<br /> if [ $? -ne 1 ]; then exit; fi<br /> cd /home/jboss-3.2.6/bin<br /> echo “Jboss Service restart at” >>WatchDog.log<br /> date >>IntfWatchDog.log<br /> /home/jboss-3.2.6/bin/jboss restart
(2)监控服务进程的日志,比较日志的最后修改时间与系统当前时间(对比到分钟数而已),若两时间差超过某一值时,说明服务进程不能正常提供服务了,对服务进程进行重启。这个监控方法使用于服务进程会定期记录日志的情况。
样例脚本,当服务日志最后修改时间与系统时间相差超过5分钟时,自动重启服务进程。
#!/bin/sh<br /> file=/home/log/xxx.log<br /> #t1 is current minute ,t2 is file’s last modify minute<br /> t1=<code>date |awk ‘{ print $4 }’|cut -d: -f 2</code><br /> t2=<code>ls -l $file|awk ‘{print$8}’|cut -d: -f2</code></p> <p>#compare the differ minute of the two<br /> diff=<code>expr $t1 – $t2</code><br /> #echo $diff<br /> if [ $diff -lt "0" -o $diff -gt "5" ]; then #当$diff小于0 或者 $diff大于5<br /> echo “service restart at <code>date</code>” >>/home/log/Watch.log;
【这里需要输入该进程服务启动的脚本】
fi;
(3)监控服务进程的日志,比较日志与日志临时文件的md5值(日志每改变一次md5值马上也会改变所以比第二种对比时间更准确),若两md5值相同(也就是日志已经没有在打印),说明服务进程不能正常提供服务了,对服务进程进行重启。这个监控方法使用于服务进程会定期记录日志的情况。
#/bin/bash<br /> SHELLDIR=/usr/local/shell #此脚本的路径<br /> CHECKDIR=/home/pd/log/timer_log #被监控日志的路径<br /> PRGDIR=/home/pd/prg #程序路径<br /> TMPFILE=$SHELLDIR/pd_timer_log.tmp #要生成被对比的临时文件的路径<br /> CURTS=<code>/usr/bin/md5sum $CHECKDIR/pd_timer_log.log</code> #显示此log的md5值<br /> LASTTS=<code>cat $TMPFILE</code> #查看生成的临时文件(临时文件在脚本最后一行)</p> <p>if [ "$CURTS" = "$LASTTS" ] #如果原log文件的md5值等于临时文件的md5值<br /> then<br /> echo “coupon app stops running, restart it now at <code>date +’%F %T’</code>” >> /var/logs/monitor_timer_log.log<br /> cd $PRGDIR<br /> /bin/bash $PRGDIR/couponTimer.sh<br /> fi<br /> /usr/bin/md5sum $CHECKDIR/pd_timer_log.log > $TMPFILE #生成临时文件,此文件是为下次作对比用的