tigtools

Пояснювач cron-виразів

Введіть cron-розклад із 5 полів, щоб дізнатися, що він означає та коли відбудеться наступний запуск. Усі обчислення виконуються у вашому браузері.

Працює у вашому браузері Без реєстрації

П’ять полів: хвилина, година, день місяця, місяць, день тижня. Також працюють макроси, як-от @daily.

Поширені розклади

Значення

Кожні 15 хвилин, з 09:00 до 17:59, у від понеділок до пʼятниця.

Поля

Хвилина
*/15
Година
9-17
День місяця
*
Місяць
*
День тижня
1-5
Часовий пояс

Наступні запуски: 10

    Як користуватися

    1. Введіть або вставте cron-вираз чи виберіть один із поширених розкладів.
    2. Перегляньте пояснення звичайною мовою. Якщо поле некоректне, буде вказано причину.
    3. Перегляньте час наступних 10 запусків у своєму часовому поясі. Перемкніться на UTC, якщо ваш сервер використовує UTC.
    4. Скопіюйте час запусків, щоб поділитися ним, або змініть вираз, щоб отримати потрібний розклад.

    Як це працює

    Стандартний cron-вираз, який використовується в crontab у Linux (Vixie cron і cronie), а також у багатьох планувальниках CI та хостинг-платформ, містить п’ять полів, розділених пробілами: хвилина (0–59), година (0–23), день місяця (1–31), місяць (1–12 або JAN–DEC) і день тижня (0–7 або SUN–SAT, де і 0, і 7 означають неділю). У кожному полі можна вказати * (будь-яке значення), окреме значення, діапазон, наприклад 1-5, список, наприклад 1,15,30, або крок, наприклад */15 (кожне 15-те значення) чи 9-17/2 (кожна друга година з 9 до 17). Назви не чутливі до регістру. Скорочення @yearly (або @annually), @monthly, @weekly, @daily (або @midnight) та @hourly відповідають виразам 0 0 1 1 *, 0 0 1 * *, 0 0 * * 0, 0 0 * * * і 0 * * * *.

    Поля дня місяця та дня тижня працюють за правилом, яке часто дивує. Якщо хоча б одне з полів починається з *, день має відповідати обом полям. Якщо обидва поля обмежені, день підходить, коли відповідає хоча б одному з них: 0 0 13 * 5 запускається 13-го числа кожного місяця, а також щоп’ятниці — не лише в п’ятницю 13-го. Оскільки перевіряється, чи починається поле з *, крок на зразок */2 теж вважається необмеженим. Так працюють Vixie cron і cronie; деякі інші планувальники мають іншу поведінку.

    Час наступних запусків обчислюється за часовим поясом вашого браузера або в UTC — його використовує більшість серверів і хмарних планувальників. Сам cron використовує часовий пояс комп’ютера, на якому він працює. Під час переходу на літній час реальні cron-демони поводяться по-різному: цей інструмент не показує локальний час, якого не існує під час переведення годинника вперед, і показує повторену годину один раз. Розширені синтаксиси не підтримуються: вирази Quartz із шістьма або сімома полями, що містять секунди чи роки, а також спеціальні символи ?, L, W і #.

    Приклади

    Перевірка стану в робочий час

    */15 9-17 * * 1-5 означає запуск кожні 15 хвилин з 09:00 до 17:59 з понеділка по п’ятницю. Останній запуск щодня — о 17:45.

    Щоденне нічне резервне копіювання

    30 2 * * * запускається щодня о 02:30. Якщо сервер використовує UTC, а ви перебуваєте в Нью-Йорку, у режимі UTC список наступних запусків показує час, за яким фактично працюватиме сервер.

    Пастка полів дня

    0 9 1 * 1 може здаватися розкладом «о 9:00 першого числа місяця, якщо це понеділок», але насправді він запускається о 09:00 першого числа кожного місяця, а також щопонеділка. Щоб запускати завдання лише в перший понеділок, задайте 0 9 1-7 * * і перевіряйте день тижня у скрипті.

    Поширені запитання

    Що означає */5 у cron?

    Це означає кожне п’яте значення поля, починаючи з найменшого. У полі хвилин */5 запускається на 0-й, 5-й, 10-й … 55-й хвилині. У полі годин */5 запускається о 0, 5, 10, 15 і 20 годині, тож проміжок з 20:00 до опівночі становить чотири, а не п’ять годин.

    Чому завдання запускається частіше, ніж я очікував?

    Якщо обидва поля — дня місяця та дня тижня — обмежені, cron запускається в дні, що відповідають хоча б одному з них. Наприклад, 0 0 15 * 1 запускається 15-го числа та щопонеділка. Щоб враховувати лише одне з полів, задайте для іншого *.

    Який часовий пояс використовує cron?

    Зазвичай використовується системний часовий пояс сервера, на якому працює cron-демон, якщо в crontab не задано CRON_TZ або TZ (підтримуються cronie). У хмарних планувальниках типовим часто є UTC. Увімкніть режим UTC, щоб побачити час, за яким працюватиме сервер із часовим поясом UTC.

    Чи можна вказати секунди або рік?

    У стандартному cron — ні: він має точність до хвилини та п’ять полів. Формати із шістьма або сімома полями, що містять секунди та роки, використовуються в Quartz, Spring і подібних бібліотеках та не підтримуються цим інструментом.

    Неділя — це 0 чи 7?

    Обидва значення. У полі дня тижня 0 і 7 означають неділю, 1 — понеділок, а 6 — суботу. Також можна використовувати трилітерні назви від SUN до SAT.

    Конфіденційність

    Вираз обробляється, а час запусків обчислюється у вашому браузері. Введені вами дані не передаються, не зберігаються й не використовуються в аналітиці.