Cron-выражения простыми словами: от «*/5 * * * *» до будней в 9:00

4 сентября 2026 г.

«Пусть отчёт собирается каждое утро в девять» — а в настройках планировщика пишется загадочное «0 9 * * *». Cron существует полвека, и его синтаксис не стал дружелюбнее. Но на самом деле вся магия — пять полей через пробел. Сейчас научимся их читать.

Пять полей: минута, час, день, месяц, день недели

Слева направо: минута (0–59), час (0–23), день месяца (1–31), месяц (1–12), день недели (0–7, где и 0, и 7 — воскресенье). Звёздочка означает «каждое значение этого поля». Запись «0 9 * * *» читается: ноль минут, девятый час, в любой день — то есть каждый день в 09:00.

Читаем примеры
*/5 * * * *   — каждые 5 минут
0 9 * * 1-5   — по будням в 9:00
0 9 1 * *     — 1-го числа каждого месяца в 9:00
30 8 * * 0    — по воскресеньям в 8:30
0 0 1 1 *     — раз в год, 1 января в полночь

Спецсимволы, которые встречаются чаще всего

  • запятая — список значений: «0,15,30,45» — в нулевую, пятнадцатую, тридцатую и сорок пятую минуту;
  • дефис — диапазон: «9-17» — с девяти до семнадцати часов;
  • слэш — шаг: «*/10» — каждые 10 единиц; «10-40/5» — от 10 до 40 с шагом 5.
Частая ловушка: «*/5» в поле минут — это минуты 0, 5, 10, 15… от начала часа, а не «через пять минут после запуска скрипта». Cron не привязывается к моменту старта — только к календарю.

Подводный камень с часовыми поясами

Cron сервера живёт по системному времени машины, а на большинстве серверов это UTC. «Каждый день в 9:00» по UTC — это полдень по Москве зимой и час дня летом. Если задача должна срабатывать по местному времени, либо выставляйте пояс сервера, либо подбирайте час с поправкой — и обязательно проверьте фактическое время первого запуска.

Как проверить расписание заранее

Не нужно ждать полуночи, чтобы понять, сработает ли «30 8 * * 0» (спойлер: это воскресенье, 8:30). Вставьте выражение в парсер cron: он переводит его в человеческий язык и показывает список следующих запусков — сразу видно, совпадает ли задуманное с написанным.

Читайте также