The core component of any websites, blogs, web services and web applications is the web server. And Apache is the most popular HTTP server that powers the websites worldwide. It’s important to ensure that the uptime and continuous running of Apache service or daemon on the server, as if HTTPD service is down, your website will be inaccessible to the visitors. Other than using monitoring service, script or utility to check if the HTTPD daemon is up, server administrator also has a choice to restart the Apache service periodically.

Shutdown and restart Apache periodically at specific interval helps to ensure that Apache web service is always running in top notch condition, without effect of possible memory leak and resource hogging by persistent connections. It also ensure that the web sites downtime is limited to the next restart schedule, just in case it’s so unlucky that Apache hangs indefinitely and your monitoring service can’t pick up the incident.

To shutdown and start Apache automatically, we can make use of crontab (or Scheduled Task or Task Scheduler in Windows Server) to schedule the task at the time prefer. Simply edit the cron jobs with a root or whell user, and add in the following line:

m h d m w /usr/local/apache/bin/apachectl restart

Replace m, h, d, m and w with value of your preference, where they represent the following meaning:

m: min (0 – 59)
h: hour (0 – 23)
d: day of month (1 – 31)
m: month (1 – 12)
w: day of week (0 – 6) (Sunday=0)

For variables that you want to happen every time, set it as * (asterisk).

For example, to kill the Apache daemon and start it immediately at 1 AM every night, set the crontab line to:

0 1 * * * /usr/local/apache/bin/apachectl restart

To restart Apache HTTPD service on weekend, such as Sunday 12 noon, use the following cron job:

0 12 * * 0 /usr/local/apache/bin/apachectl restart

You can input “man crontab” to learn more about cron jobs in Linux/Unix/FreeBSD/CentOS. To edit the crontab job list, simply enter “crontab -e” on the shell. Existing crontab will appear on a text editor, such as GNU nano. If this is the case, make the necessary changes, then press “Ctrl-X”, follow by “Y” to save the file, and follow by Enter press to accept the default file name. The new crontab will be installed and in effect immediately.

Note that the path to apachectl may be different on different variant of Unix, Linux or BSD flavors. Use one of the following commands to find out where is Apache installed:

find / apachectl | grep apachectl
whereis apachectl

Some Apache may install in /usr/sbin/apachectl, or you can use the httpd or apachectl symbolic links in /etc/rc.d/init.d/apachectl or /etc/rc.d/init.d/httpd.