An Apache Watchgoose
In the past, people have used geese in the place of watchdogs because they honk and flap rather a lot. Usually, the domestic Greylag Goose is the preferred choice as it’s half a kilo heavier than the Swan Goose. It was also a goose that God chose to infuse with his divine will in 1096 as part of the People’s Crusade, according to the Germans that followed him around the Rhine region, killing any Jews they found. Those pesky Germans, eh?
So, with that in mind, when I found myself looking for a watchdog script to monitor and fix Apache and nothing fitted my needs exactly, I decided to infuse my script with the power and will of the goose. I don’t know if this will be of use to anyone, but my previous script was well received by one or two people so here you go.
#!/bin/bash # # watchgoose.sh - an Apache restartinator. # Put it in your crontab every five minutes # export site="http://cat5.org/" # replace with a site running on your webserver export tempfile=~jearle/bin/goose.txt # This can be anywhere export logfile=~jearle/bin/goose.log # Logfile export email=jearle@example.com # Your email address if [ "`curl -sIm 5 ${site} | head -1 | tr -d '\r'`" != "HTTP/1.1 200 OK" ]; then echo `date +%F\ %T` > $tempfile /usr/bin/top -b -n1 >> $tempfile ps wwaux | awk '/httpd/{print "kill -9 " $2}' | sh ipcs -s | grep apache | awk ' { print $2 } ' | xargs -n 1 ipcrm -s /usr/sbin/apachectl graceful >> $tempfile echo "Attempted Apache restart at `date +%F\ %T`" >> $tempfile echo "Attempted Apache restart at `date +%F\ %T`" >> $logfile cat ${tempfile} | /bin/mail $email -s "[CAT5] Restarted Apache" rm ${tempfile} fi echo "`date +%F\ %T` and all is well ..." >> $logfile
Apologies to those who came here to see how the native Americans used waterfowl to guard their teepees. This isn’t the post you’re looking for. Honk, honk! Oh, and if you’re looking for someone to cripple your goose, try Pet Connection NI instead.
Update: Sometimes Apache decides to be a little bitch and not start up because it loves hoarding semaphores. I’ve added a ipcs line to fix that. Thanks to outofcontrol for something to copy/paste.