Ответы:
Я даю альтернативный ответ, хотя Тревор прав.
@weekly
Ключевое слово cron делает именно так, как он упоминал. Однако большинство дистрибутивов используют run-parts
для запуска своих собственных запланированных файлов crontab (ежечасно, ежедневно, еженедельно и ежемесячно), в которых не используются ключевые слова cron.
Например , в Ubuntu есть /etc/cron.weekly
отдельный файл для каждого cronjob.
Это обычно определяется в /etc/crontab
Релиз Ubuntu 9.10 содержит следующие /etc/crontab
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
Таким образом, еженедельный crontab в Ubuntu запускается в 6.47 в воскресенье.
Примечание: при поиске man-страниц для реализаций crontab, вы хотите использовать man 5 crontab
вместо just man crontab
. Последний даст вам только синтаксис команды crontab. Первый дает вам детали реализации crontab.
So the weekly crontab in Ubuntu is run at 6.47am on Sunday
. Это неверно, потому что test -x /usr/sbin/anacron ||
часть команды говорит ТОЛЬКО запускать материал справа от того, ||
если «/ usr / sbin / anacron» НЕ исполняется или не существует, но это так, так что на run-parts
самом деле он никогда не будет запущен cron
! Скорее, anacron
должен справиться с этим, верно? Таблица Aanacron в "/ etc / anacrontab" показывает это для еженедельного:, 7 10 cron.weekly run-parts --report /etc/cron.weekly
что означает, что еженедельное задание выполняется каждый 7-й день с 10-минутной задержкой.
@weekly эквивалентно: 0 0 * * 0
Так что он будет работать в 00:00 в воскресенье.
Ответ лежит на странице руководства для самого crontab, ( man 5 crontab
):
Поддерживаются эти специальные «псевдонимы» спецификации времени, которые заменяют 5 начальных полей времени и даты и имеют префикс «@»:
@reboot : Run once after reboot. @yearly : Run once a year, ie. "0 0 1 1 *". @annually : Run once a year, ie. "0 0 1 1 *". @monthly : Run once a month, ie. "0 0 1 * *". @weekly : Run once a week, ie. "0 0 * * 0". @daily : Run once a day, ie. "0 0 * * *". @hourly : Run once an hour, ie. "0 * * * *".
Итак, это 0 0 * * 0
00:00 (в любую дату любого месяца), если это воскресенье (день недели 0).