⏱️
← Назад к руководствам

Как проверять Cron-выражения: пошаговое руководство

· Теги: cron-validation, cron-debugging, cron-syntax-check, schedule-validation, linux-crontab

Как проверять Cron-выражения

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

Распространённые синтаксические ошибки

Значения вне диапазона

Каждое поле принимает определённый диапазон. Значения вне этого диапазона недействительны.

# Неверно: минута 60 вне диапазона (0-59)
60 * * * *

# Неверно: час 24 вне диапазона (0-23)
0 24 * * *

Пропущенные поля

Cron-выражение должно содержать ровно пять полей. Четыре поля недействительны, шесть полей требуют расширенного синтаксиса.

# Неверно: только 4 поля (отсутствует день недели)
0 0 * *

# Неверно: 6-полевой синтаксис без соответствующей поддержки демона
0 0 * * * * /command.sh

Всегда считайте: минута, час, день месяца, месяц, день недели.

Некорректные шаговые значения

# Неверно: нельзя использовать шаг 0
*/0 * * * *

# Неверно: шаг превышает максимальное значение поля
*/61 * * * *

Шаговые значения должны начинаться с 1 и не превышать максимальное значение поля.

Как проверить Cron-выражение

Шаг 1: Разбор на поля

Разделите по пробелам и убедитесь, что полей ровно пять:

Выражение: 30 6 * * 1-5
Поля:      минута=30, час=6, день=*, месяц=*, день_недели=1-5

Шаг 2: Проверка каждого поля

| Поле | Допустимый диапазон | Допускает спецсимволы | |-------|--------------|-----------------------| | Минута | 0-59 | * , - / | | Час | 0-23 | * , - / | | День месяца | 1-31 | * , - / | | Месяц | 1-12 | * , - / | | День недели | 0-7 | * , - / |

Шаг 3: Проверка на конфликты

Некоторые выражения синтаксически верны, но логически неожиданны:

# Запускается 15-го числа ИЛИ каждое воскресенье — условие ИЛИ
0 0 15 * 0

День месяца и день недели вместе создают условие ИЛИ в стандартном cron. Задача запускается при совпадении любого из них.

Шаг 4: Предварительный просмотр предстоящих моментов

Сгенерируйте моменты выполнения для визуальной проверки расписания:

Выражение: 0 2 * * 1
Следующие 5 выполнений:
  1. 2026-07-27 02:00:00 (понедельник)
  2. 2026-08-03 02:00:00 (понедельник)
  3. 2026-08-10 02:00:00 (понедельник)

Если предварительный просмотр не соответствует вашим намерениям, исправьте выражение до развёртывания в рабочей среде.

Отладка невыполняющихся задач

Действительное выражение, которое не выполняется, обычно связано с проблемами системы:

  • Права доступа — скрипт должен иметь право на выполнение (chmod +x).
  • Путь — cron использует минимальный PATH. Всегда используйте абсолютные пути: /usr/local/bin/mybackup.sh, а не mybackup.sh.
  • Окружение — cron не загружает профили оболочки. Экспортируйте переменные внутри crontab или самого скрипта.
  • Логирование — перенаправьте вывод для подтверждения выполнения:
0 6 * * * /path/to/script.sh >> /var/log/cron.log 2>&1

Использование инструмента-валидатора

Валидатор cron-выражений предоставляет три функции:

  1. Проверка синтаксиса — немедленная обратная связь о значениях полей и форматировании.
  2. Предварительный просмотр расписания — просмотр предстоящих моментов выполнения от текущей даты.
  3. Визуальный календарь — запланированные выполнения, отображённые на месячном календаре.

Ни одно cron-выражение не должно развёртываться без предварительного просмотра нескольких следующих моментов выполнения. Тридцатисекундная проверка предотвращает незаметные сбои расписания.

Как проверять Cron-выражения: пошаговое руководство - CoolTool