Генератор cron-выражений

Пишите и читайте расписания crontab. Введите cron-выражение и увидите словами, когда оно сработает, ближайшие запуски и что означает каждое из пяти полей.

Минута
Час
День
Месяц
День недели

Каждую минуту.

Ближайшие запуски


  •  
  •  
  •  
  •  
  •  

Время показано в часовом поясе вашего компьютера (). Cron использует пояс сервера, а он часто другой.

Частые расписания


Выберите одно, чтобы подставить его в поле выше.

* * * * *Каждую минуту
*/5 * * * *Каждые 5 минут
*/15 * * * *Каждые 15 минут
*/30 * * * *Каждые полчаса
0 * * * *Каждый час
0 */2 * * *Каждые 2 часа
0 */6 * * *Каждые 6 часов
0 */12 * * *Дважды в день
0 0 * * *Ежедневно в полночь
0 9 * * *Ежедневно в 9 утра
0 9 * * 1-5С понедельника по пятницу в 9 утра
0 9 * * 6,0В субботу и воскресенье в 9
0 0 * * 1Каждый понедельник в полночь
0 18 * * 5Каждую пятницу в 18:00
0 0 1 * *Первый день месяца
0 0 1 1 *Первый день года

Что означает каждое поле


ПолеДопустимые значения
Минута0 – 59
Час0 – 23
День месяца1 – 31
Месяц1 – 12, JAN – DEC
День недели0 – 6, SUN – SAT (0 = 7)

Специальные символы


СимволЗначение
*любое значение
,разделяет значения в списке
-диапазон значений
/шаг внутри диапазона

Сокращения


@yearly, @annually0 0 1 1 *
@monthly0 0 1 * *
@weekly0 0 * * 0
@daily, @midnight0 0 * * *
@hourly0 * * * *
@reboot

Их нет в POSIX-cron, но их принимает почти любая реализация.

На чём обычно спотыкаются


  • Когда день месяца и день недели ограничены оба, cron запускается в дни, подходящие под любое из двух условий, а не под оба сразу. «* * 3 * 1» сработает 3-го числа и каждый понедельник. Исключение — если одно из полей начинается со звёздочки: «* * */2 * 1» сработает только в нечётный день, который к тому же понедельник. В man-странице это описано неверно.
  • Держите сервер, а вместе с ним и cron, в UTC. Расписание в поясе с переходом на летнее время раз в год пропустит запуск и повторит другой при обратном переводе.
  • В стандартном cron нет поля ни для секунд, ни для годов. Если нужна такая точность, cron — неподходящий инструмент.
  • Избегайте @reboot. Он зависит от того, как машина была перезапущена и какие службы были готовы в тот момент, и из-за этого о нём трудно рассуждать.
  • Расписание, которое не помещается в пять полей, можно разбить на две записи. Чтобы запускать что-то каждые 90 минут, напишите «0 */3 * * *» и «30 1/3 * * *» рядом.
  • Пишите команду с абсолютными путями. Cron работает с очень коротким PATH и почти без переменных окружения, которые есть у вашей оболочки.

Частые вопросы о cron-выражениях


Что означают пять полей?
В этом порядке: минута, час, день месяца, месяц и день недели. Поле со звёздочкой подходит под любое значение.

Воскресенье — это 0 или 7?
И то и другое. Большинство реализаций принимает для воскресенья и 0, и 7, а также трёхбуквенные имена от SUN до SAT.

Почему задача не запустилась в ожидаемое время?
Обычные причины — другой часовой пояс на сервере, описанное выше правило про день месяца и день недели, либо команда падает, потому что cron не загружает профиль вашей оболочки.

Отправляет ли эта страница моё выражение куда-нибудь?
Нет. Выражение разбирается, а запуски вычисляются в вашем браузере; никуда ничего не уходит.

Wikipedia — Cron
Wikipedia — Crontab
Wikipedia — Daemon