Перезапустить apache - плохая идея, может быть, вы можете просто перезагрузить? Или проверьте состояние apache и перезапустите, если apache не работает.
#!/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'])
и задание cron будут
*/5 * * * * restart_apache.py
И прежде всего, когда вы хотите перезапустить apache в скриптах, вы должны проверить файл конфигурации на наличие ошибок.
#!/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"