Объяснение выражений Cron Составление расписаний без потери рассудка

Опубликовано

Практическое руководство по синтаксису cron: пять полей, специальные символы, 10 готовых выражений и генератор cron-выражений для создания и проверки расписаний без догадок.

Объяснение выражений Cron: Составление расписаний без потери рассудка 1
Реклама · УДАЛИТЬ?

Расписания Cron выполняют задачи на системах Unix. Синтаксис — пять полей, разделённых пробелами — кажется простым, пока вы не хотите запустить что-то каждые 15 минут в рабочие дни и не можете вспомнить, является ли это полем два или три. Это справочник, который вы всегда открываете.

Формат из пяти полей

Каждое выражение Cron содержит ровно пять полей, разделённых пробелами, в следующем порядке:

┌─────────────── minute (0–59)
│ ┌─────────────── hour (0–23)
│ │ ┌─────────────── day of month (1–31)
│ │ │ ┌─────────────── month (1–12)
│ │ │ │ ┌─────────────── day of week (0–7, 0 and 7 = Sunday)
│ │ │ │ │
* * * * *

Справочник по полям

ПолеРазрешённые значенияЛюбое значение — соответствует каждой единицеПример
означает 30-ю минуту.0–59* , – /*/15 = каждые 15 минут
означает 9 утра.0–23* , – /9-17 = с 9 утра до 5 часов
День месяца1–31* , – / ?1 = первый день месяца
, декабрь —1–12* , – /*/3 = каждый квартал
День недели0–7 (0=воскресенье)* , – / ?1-5 = понедельник–пятница

Любое значение — соответствует каждой единице

  • * — звёздочка, соответствует любому значению в этом поле
  • , — разделитель списка: 1,3,5 в день недели означает понедельник, среду, пятницу
  • — диапазон: 9-17 в поле часа означает с 9 утра до 5 часов
  • / — шаг: */15 в поле минут означает каждые 15 минут; 2/3 означает каждый третий элемент, начиная с 2
  • ? — отсутствие конкретного значения (день месяца или день недели, используется только в Quartz/Spring scheduler)

Общие выражения Cron

Каждый день в 9:00 утраОписание
* * * * *Каждую минуту
*/5 * * * *Каждые 5 минут
*/15 * * * *Каждые 15 минут
0 * * * *Понедельник по пятницу в 9:00 утра
0 0 * * *Каждый день в полночь
0 9 * * 1-59 утра каждый рабочий день
0 9-17 * * 1-5Каждый час с 9 утра до 5 часов, только в рабочие дни
0 0 * * 01-е и 15-е число месяца в 4:30 утра
0 0 1 * *Полночь первого числа каждого месяца
0 0 1 1 *Полночь 1 января

Три реальных примера

1. Резервное копирование базы данных в полночь

0 0 * * *

означает 30-ю минуту. 0, час 0, каждый день. Запускается один раз в 00:00 — чисто, предсказуемо и не мешает в часы пик.

2. Синхронизация API каждые 15 минут

*/15 * * * *

*/15 в поле минут означает «шаг на 15, начиная с 0» — запускается в :00, :15, :30 и :45 каждого часа. Все остальные поля *, поэтому работает круглосуточно.

3. Еженедельная очистка — 6 утра понедельник

0 6 * * 1

означает 30-ю минуту. 0, час 6, любой день месяца, любой месяц, день недели 1 (понедельник). Запускается один раз в неделю. Измените 1 к 5 если пятница лучше подходит для вашей команды.

Создание и проверка расписания

Запоминание всех комбинаций не является целью — важно знать, где искать. Используйте Генератор выражений Cron для визуального настройки полей и наблюдайте, как формируется выражение. После того, как вы получите кандидатское выражение, вставьте его в для проверки того, что запускается вовремя. для подтверждения того, что оно запускается в точные дни и время, которые вы ожидаете, перед тем как внедрить.

Пять полей, четыре специальных символа, два инструмента для проверки работы — это всё, что нужно для надёжного планирования.

Хотите убрать рекламу? Откажитесь от рекламы сегодня

Установите наши расширения

Добавьте инструменты ввода-вывода в свой любимый браузер для мгновенного доступа и более быстрого поиска

в Расширение Chrome в Расширение края в Расширение Firefox в Расширение Opera

Табло результатов прибыло!

Табло результатов — это интересный способ следить за вашими играми, все данные хранятся в вашем браузере. Скоро появятся новые функции!

Реклама · УДАЛИТЬ?
Реклама · УДАЛИТЬ?
Реклама · УДАЛИТЬ?

новости с техническими моментами

Примите участие

Помогите нам продолжать предоставлять ценные бесплатные инструменты

Купи мне кофе
Реклама · УДАЛИТЬ?