Генератор 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
* * * * * 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/.