raatools/

Генератор Cron-виразів

Створюйте п'ятипольні cron-вирази візуально.

Format: minute hour day-of-month month day-of-week

Use * for any value, 0-5 for ranges, 1,3,5 for lists, */5 for every N

Cron Expression
* * * * *
Description

every minute

Що таке cron?

Cron — стандартний планувальник завдань у Unix і Linux. Він виконує команди або сценарії у визначений час та з певними інтервалами, що робить його незамінним для системного адміністрування, автоматизації DevOps і планування завдань серверних застосунків. Назва походить від грецького слова chronos, що означає «час».

Вираз cron — це компактний рядок із п'яти полів, який визначає, коли має виконуватися завдання. Кожне поле задає компонент часу: хвилини, годину, день місяця, місяць і день тижня. Разом ці п'ять полів можуть виражати розклади від «щохвилини» до «раз на рік у конкретну дату».

Синтаксис cron

Кожне з п'яти полів приймає конкретні значення та спеціальні символи. Зірочка (*) означає «будь-яке можливе значення». Число задає конкретне значення. Дефіс (1–5) визначає діапазон. Кома (1,3,5) створює список. Слеш (*/5) задає крок. Комбінуючи ці оператори, можна побудувати практично будь-який розклад.

Довідник полів

  • Хвилина (0–59): хвилина години, коли виконується завдання.
  • Година (0–23): година доби у 24-годинному форматі. 0 — опівночі, 12 — опівдні.
  • День місяця (1–31): календарний день. Не кожен місяць має 31 день — cron автоматично пропускає недійсні дати.
  • Місяць (1–12): календарний місяць. 1 — січень, 12 — грудень.
  • День тижня (0–6): день тижня. 0 — неділя, 6 — субота. Деякі системи також приймають 7 для неділі.

Поширені вирази cron

  • 0 0 * * * — 0 0 * * * — щодня опівночі.
  • 0 9 * * 1-5 — 0 9 * * 1-5 — у робочі дні о 9:00.
  • 0 0 1 * * — 0 0 1 * * — перший день кожного місяця опівночі.
  • */15 * * * * — */15 * * * * — кожні 15 хвилин.
  • 0 */4 * * * — 0 */4 * * * — кожні 4 години на початку години.

Поширені помилки у cron

Найчастіша помилка — переплутати порядок полів. Cron завжди читає спочатку хвилину, потім годину — тому «0 9» означає 9:00, а не хвилину 9. Ще одна пастка — забувати, що часовий пояс сервера визначає час запуску cron. Якщо сервер у UTC, а ви очікуєте місцевий час, завдання запускатимуться не вчасно.

Уникайте планування ресурсоємних завдань точно опівночі (0 0 * * *), бо саме тоді запускається багато інших cron-завдань. Розподіляйте завдання з інтервалом у кілька хвилин, щоб запобігти пікам навантаження. Також остерігайтеся завдань, які виконуються довше за свій інтервал: якщо завдання запускається щохвилини, але виконується 3 хвилини, виникнуть перекривальні екземпляри.

Найкращі практики

Завжди перенаправляйте вивід cron до файлу журналу (>> /var/log/myjob.log 2>&1), щоб мати можливість усувати збої. Використовуйте абсолютні шляхи для команд і сценаріїв, оскільки cron запускається з мінімальним середовищем PATH. Перевіряйте вираз за допомогою такого інструменту, як цей, перш ніж розгортати у виробничому середовищі.

Для складних потреб планування розгляньте альтернативи cron: systemd timers (Linux), Celery Beat (Python) або хмарні планувальники (AWS EventBridge, Google Cloud Scheduler). Вони пропонують такі функції, як логіка повторних спроб, панелі моніторингу та розподілене виконання, яких у стандартному cron немає.

Часті запитання

Чи може cron запускати завдання кожні 30 секунд?

Ні. Мінімальна роздільна здатність cron — одна хвилина. Щоб запускати завдання кожні 30 секунд, заплануйте його щохвилини і додайте 30-секундний sleep перед другим виконанням у тому самому сценарії. Крім того, використовуйте systemd timer або планувальник для конкретної мови для інтервалів менше хвилини.

Де знаходиться файл crontab?

Crontab користувачів зберігається у /var/spool/cron/ (Red Hat/CentOS) або /var/spool/cron/crontabs/ (Debian/Ubuntu). Редагуйте свій файл за допомогою «crontab -e», а не змінюйте файли безпосередньо. Системний crontab знаходиться за адресою /etc/crontab, а додаткові завдання можна розміщувати у /etc/cron.d/.