Сервер Ubuntu 12.04. Я использую:
sudo crontab -e
* * * * * root /etc/init.d/apache2 restart > /dev/null 2>&1
sudo restart cron
И он не работает. Как это исправить? Так много документов в google, мне нужен один «истинный способ».
Перезапустить 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"
Чтобы лучше ознакомиться с командами синхронизации crontab, вы можете попробовать Cron Sandbox.
Вводятся параметры времени / даты, и появляется список будущих времен исполнения.