Код

Конструктор cron-виразів

Конструктор cron-виразів
* * * * *
Часті розклади

Готовий вираз можна вставити цілком у будь-яке з п’яти полів — він розкладеться по них сам. Усе рахується у вашому браузері.

Про інструмент: конструктор і розшифровувач cron-виразів

Cron керує розкладами на кожному сервері, але його синтаксис не тримає в голові ніхто. П’ять зірочок нічого не пояснюють, а помилка в одному символі означає, що завдання виконається не тоді, коли треба, і помітите ви це нескоро. Цей інструмент працює в обидва боки: складає вираз із полів і одразу перекладає його людською мовою. Тут немає сторонньої реклами й реєстрації.

Усе рахується у вашому браузері — вираз не надсилається на сервер і ніде не зберігається.

Головні переваги інструменту:

  • Пояснення живою мовою: під виразом одразу видно, що саме він означає. Не «0 9 * * 1-5», а «о 09:00, з понеділка по пʼятницю».

  • Найближчі запуски: п’ять конкретних дат із днями тижня. Це найнадійніший спосіб переконатися, що розклад саме той, який ви задумали.

  • Розбір готового виразу: вставте цілий рядок на кшталт */15 * * * * у будь-яке з пʼяти полів — він розкладеться по них сам.

Як влаштований cron-вираз

Вираз складається з пʼяти полів, розділених пробілами. Кожне відповідає за свою одиницю часу:

  • Хвилина — від 0 до 59.

  • Година — від 0 до 23, тобто час рахується в 24-годинному форматі.

  • День місяця — від 1 до 31.

  • Місяць — від 1 до 12. Можна писати й скороченнями: JAN, FEB і далі.

  • День тижня — від 0 до 6, де 0 це неділя. Значення 7 теж означає неділю, а замість цифр приймаються MON, TUE і решта.

Що можна писати в полі

  • Зірочка * означає «будь-яке значення». Пʼять зірочок поспіль дають запуск щохвилини.

  • Число 5 — рівно це значення.

  • Діапазон 1-5 — усі значення від першого до останнього включно.

  • Перелік 1,15,30 — тільки перелічені значення.

  • Крок */10 — кожне десяте значення. Крок можна поєднати з діапазоном: 0-30/10 дасть 0, 10, 20 і 30.

Пастка, на якій спотикаються всі

Якщо ви обмежили одночасно день місяця і день тижня, cron спрацює тоді, коли збігається будь-яка з двох умов, а не обидві разом.

Вираз 0 0 13 * 5 запуститься не «у пʼятницю 13 числа», як здається, а і 13 числа кожного місяця, і щопʼятниці. Це не помилка реалізації, а поведінка, закладена в стандарт. Інструмент попереджає про неї щоразу, коли ви обмежуєте обидва поля, а список найближчих запусків показує наслідок наочно.

Кілька практичних порад

  • Не ставте важкі завдання рівно на початок години: о 00:00 і 03:00 навантаження на сервери традиційно найбільше. Зсув на кілька хвилин, скажімо 7 3 * * *, розводить піки.

  • Памʼятайте про часовий пояс сервера: cron працює за часом машини, а не за вашим. Найближчі запуски тут рахуються за часом вашого браузера, тож на сервері в іншому поясі час буде інший.

  • Кожні 90 хвилин записати не можна: поля незалежні, тому інтервал, довший за годину і не кратний їй, доводиться розбивати на кілька рядків розкладу.

  • Перевіряйте результат за списком запусків, а не за виразом: прочитати пʼять дат надійніше, ніж вичитувати зірочки.