1 #!/bin/bash 2 #Author:windydays 3 #Date : 2010/8/29 4 #用于监控apache,如果退出就自动重启apache,原理是在如果apache退出,则apache的pid文件会被close,或触发attrib事件, 5 #只要用inotify监控这个事件,然后重启apache,再重新监控pid文件即可。 6 #使用方法:用root权限运行即可。 7 #停止方法:sudo pkill inotifywait. 8 pid_file=/var/run/apache2.pid 9 mon_log=/var/log/apache2/mon-apache.sh.log 10 if ! [ -f $pid_file ] ; then 11 echo 'pid file does NOT exist! maybe it is somewhere else or 12 service is 13 down now.' >>$mon_log; 14 exit 1 ; 15 fi 16 #如果apache没有出问题,会阻塞在下面这里. 17 inotifywait -q -e close $pid_file >>$mon_log; 18 exit_code=$?; 19 echo "At $(date)" >>$mon_log; 20 #如果#?不等于0说明inotifywait不正常退出。 21 if [ $exit_code = 0 ];then 22 /etc/init.d/apache2 restart 23 sleep 8; 24 exec $0; 25 fi
领会意思即可,这个东西没有实用价值,有一些超时问题无法解决,实际上还是那种每隔两分钟,就发个HTTP请求,检测apache是否还活着的方式比较稳定可靠,例如monit。