Ubuntu Server 12.04. Я использую:
sudo crontab -e
* * * * * root /etc/init.d/apache2 restart > /dev/null 2>&1
sudo restart cron
И это не работает. Как это исправить? В Google так много документов, мне нужен один «верный путь».
Я предполагаю, что Вы вышли из вкладки крона после 2-го оператора. Та третья строка не будет работать в crontab. Крон должен перезагрузить себя.
проблема с Вашей вкладкой крона - то, что у Вас есть она набор для выполнения каждую минуту каждого часа каждого дневного ect. Это, что * средства, все опции.
Представление это в coumn формате
` m - h dom mon dow command
* * * * * root /etc/init.d/apache2 restart > /dev/null 2>&1
Вам нужно
0 1 * * * root /etc/init.d/apache2 restart > /dev/null 2>&1
, Это - 0th минута 1-го часа каждый день.
Апач перезапуска является плохой идеей, возможно, можно ли просто перезагрузить? Или проверьте апачское состояние и перезапуск, если апач снижается.
#!/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'])
и задание крона будет
*/5 * * * * restart_apache.py
И в первую очередь, когда Вы хотите перезапустить апача в сценариях, необходимо проверить конфигурационный файл на наличие ошибок.
#!/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 синхронизирующие команды, Вы могли попробовать Песочница Крона .
параметры Времени/даты входят, и список будущего времени выполнения выходит.