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.