Cron-выражение — компактная, но не всегда понятная с первого взгляда запись расписания: строка вроде */15 * * * * ничего не скажет, пока не разберёшься в формате. Cron используют в Linux (crontab), CI/CD-пайплайнах и многих планировщиках задач, а ошибка в одном поле может запустить задачу не в то время. Разберём формат и частые примеры.
Пять полей cron
Классическое cron-выражение состоит из пяти полей в строгом порядке:
минута час день месяца месяц день недели
0-59 0-23 1-31 1-12 0-7
День недели: 0 и 7 означают воскресенье, 1 — понедельник, и так далее до субботы (6).
Спецсимволы
*— «любое значение» (каждую минуту/час/день — в зависимости от поля).*/N— «каждые N единиц», например*/15в поле минут — каждые 15 минут.a-b— диапазон, например1-5в поле дня недели — с понедельника по пятницу.a,b,c— список конкретных значений, например0,30в минутах — в 0-ю и 30-ю минуту каждого часа.
Разбор примеров
| Выражение | Что значит |
|---|---|
* * * * * |
Каждую минуту |
*/5 * * * * |
Каждые 5 минут |
0 * * * * |
В начале каждого часа |
0 0 * * * |
Каждый день в полночь |
30 8 * * 1-5 |
В 08:30 по будням (пн–пт) |
0 9 1 * * |
В 09:00 в первый день каждого месяца |
0 0 * * 0 |
В полночь каждое воскресенье |
Частая ошибка
Перепутать местами день месяца и месяц, или забыть, что нумерация дня недели начинается с воскресенья (0), а не с понедельника — из-за этого расписание «по будням» иногда случайно включает выходной. Перед сохранением задачи стоит явно проверить, что выражение расшифровывается так, как задумано.
Как проверить онлайн
Не держите в голове порядок полей и спецсимволы — вставьте выражение в расшифровщик cron, и он переведёт его на понятный язык («в 08:30, по будням»), а заодно проверит корректность синтаксиса. Стандартные сокращения вроде @daily инструмент пока не поддерживает — только классические 5 полей.