How to Check if Apache Is Up and Restart if Not

By | September 17, 2008

I do often monitor server apache status as most often reason of server outages is Apache overload. Some web hosting panels are sending notifications when your server is down; some web services like Alertra.com provide you with different notification options and one of my hosters has his internal monitoring service. But what to do if you need to go anywhere where you can’t get access to your server? You’ll need a cron task that will check whether apache is up and will restart it if not.

I’ve found a solution at a forum. You’ll need a simple shell script and here it is:

#!/bin/sh
run=`ps ax | grep /usr/sbin/httpd | grep -v grep | cut -c1-5 | paste -s -`
if [ “$run” ];
then
echo “Apache is running”
else
/etc/init.d/httpd start
fi

This script will check for a number of running script processes and will try to start apache if it is not running. You should add this script to crontab with any frequency you like. I’d suggest to run it every 3 minutes as it doesn’t cause server load, but your apache stability is vital.