Cron job to restart Apache

35,325

Solution 1

I'm assuming that you have exited the cron tab after the 2nd statement. That third line won't work in crontab. Cron should reload itself.

The issue with your cron tab is that you have it set to run every minute of every hour of every day ect. That what the * means, all options.

View this in coumn format

` m - h  dom mon dow    command

* *   *   *   *       root /etc/init.d/apache2 restart > /dev/null 2>&1

You need

0  1  * * * root /etc/init.d/apache2 restart > /dev/null 2>&1

This is the the 0th minute of the 1st hour, every day.

Solution 2

Restart apache is a bad idea, maybe you can just reload? Or check apache status and restart if apache is down.

#!/usr/bin/env python
import urllib2
import commands
from subprocess import Popen

ip = '127.0.0.1'
try:
  link = urllib2.urlopen('http://%s' % ip).code
  print link
except urllib2.HTTPError as e:
  print e.code
except urllib2.URLError:
  Popen(['invoke-rc.d','apache2','restart'])

and cron job will be

*/5 * * * * restart_apache.py

And first of all, when you want to restart apache in scripts, you must check configuration file for errors.

#!/usr/bin/env python
import re
from subprocess import check_output, call

def is_config_ok():
    if re.findall('OK',check_output('apache2ctl configtest', shell=True)):
        return 1
    else:
        return 0

if __name__ == "__main__":
    if is_config_ok():
        call('invoke-rc.d apache2 restart', shell=True)
    else:
        print "error in config"
Share:
35,325

Related videos on Youtube

Leon
Author by

Leon

Updated on September 18, 2022

Comments

  • Leon
    Leon almost 2 years

    Ubuntu Server 12.04. I use:

    sudo crontab -e
    * * * * * root /etc/init.d/apache2 restart > /dev/null 2>&1
    sudo restart cron
    

    And it doesnt work. How to fix it? So many docs in google,I need one "true way".

    • T_S_
      T_S_ about 11 years
      What are you trying to achieve with this entry ? Using wildcards for everything seems weird.
    • thomasrutter
      thomasrutter about 9 years
      Wildcards for everything should be valid, but would result in it being called every 1 minute.
    • thomasrutter
      thomasrutter about 9 years
      @tim when you say it doesn't work, what happens? Is there anything in /var/log/syslog to show whether it executed and what error occurred?
  • Leon
    Leon about 11 years
    I use * * * * * root /etc/init.d/apache2 restart > /dev/null 2>&1 and it doesnt work
  • Leon
    Leon about 11 years
    0 1 * * * root /etc/init.d/apache2 restart > /dev/null 2>&1 - don't work. empty in logs
  • wlraider70
    wlraider70 about 11 years
    You should have a log.. do this 1 * * * * service apache2 restart thus will set the job to hourly.
  • Pavel 'PK' Kaminsky
    Pavel 'PK' Kaminsky over 8 years
    missing import urllib2
  • Tertium
    Tertium over 8 years
    /sbin/service <name> restart in case of centos6