Генератор cron-выражений
Пишите и читайте расписания crontab. Введите cron-выражение и увидите словами, когда оно сработает, ближайшие запуски и что означает каждое из пяти полей.
Каждую минуту.
Ближайшие запуски
Время показано в часовом поясе вашего компьютера (). Cron использует пояс сервера, а он часто другой.
Частые расписания
Выберите одно, чтобы подставить его в поле выше.
| * * * * * | Каждую минуту |
| */5 * * * * | Каждые 5 минут |
| */15 * * * * | Каждые 15 минут |
| */30 * * * * | Каждые полчаса |
| 0 * * * * | Каждый час |
| 0 */2 * * * | Каждые 2 часа |
| 0 */6 * * * | Каждые 6 часов |
| 0 */12 * * * | Дважды в день |
| 0 0 * * * | Ежедневно в полночь |
| 0 9 * * * | Ежедневно в 9 утра |
| 0 9 * * 1-5 | С понедельника по пятницу в 9 утра |
| 0 9 * * 6,0 | В субботу и воскресенье в 9 |
| 0 0 * * 1 | Каждый понедельник в полночь |
| 0 18 * * 5 | Каждую пятницу в 18:00 |
| 0 0 1 * * | Первый день месяца |
| 0 0 1 1 * | Первый день года |
Что означает каждое поле
| Поле | Допустимые значения |
|---|---|
| Минута | 0 – 59 |
| Час | 0 – 23 |
| День месяца | 1 – 31 |
| Месяц | 1 – 12, JAN – DEC |
| День недели | 0 – 6, SUN – SAT (0 = 7) |
Специальные символы
| Символ | Значение |
|---|---|
| * | любое значение |
| , | разделяет значения в списке |
| - | диапазон значений |
| / | шаг внутри диапазона |
Сокращения
| @yearly, @annually | 0 0 1 1 * |
| @monthly | 0 0 1 * * |
| @weekly | 0 0 * * 0 |
| @daily, @midnight | 0 0 * * * |
| @hourly | 0 * * * * |
| @reboot | — |
Их нет в POSIX-cron, но их принимает почти любая реализация.
На чём обычно спотыкаются
- Когда день месяца и день недели ограничены оба, cron запускается в дни, подходящие под любое из двух условий, а не под оба сразу. «* * 3 * 1» сработает 3-го числа и каждый понедельник. Исключение — если одно из полей начинается со звёздочки: «* * */2 * 1» сработает только в нечётный день, который к тому же понедельник. В man-странице это описано неверно.
- Держите сервер, а вместе с ним и cron, в UTC. Расписание в поясе с переходом на летнее время раз в год пропустит запуск и повторит другой при обратном переводе.
- В стандартном cron нет поля ни для секунд, ни для годов. Если нужна такая точность, cron — неподходящий инструмент.
- Избегайте @reboot. Он зависит от того, как машина была перезапущена и какие службы были готовы в тот момент, и из-за этого о нём трудно рассуждать.
- Расписание, которое не помещается в пять полей, можно разбить на две записи. Чтобы запускать что-то каждые 90 минут, напишите «0 */3 * * *» и «30 1/3 * * *» рядом.
- Пишите команду с абсолютными путями. Cron работает с очень коротким PATH и почти без переменных окружения, которые есть у вашей оболочки.
Частые вопросы о cron-выражениях
Что означают пять полей?
В этом порядке: минута, час, день месяца, месяц и день недели. Поле со звёздочкой подходит под любое значение.
Воскресенье — это 0 или 7?
И то и другое. Большинство реализаций принимает для воскресенья и 0, и 7, а также трёхбуквенные имена от SUN до SAT.
Почему задача не запустилась в ожидаемое время?
Обычные причины — другой часовой пояс на сервере, описанное выше правило про день месяца и день недели, либо команда падает, потому что cron не загружает профиль вашей оболочки.
Отправляет ли эта страница моё выражение куда-нибудь?
Нет. Выражение разбирается, а запуски вычисляются в вашем браузере; никуда ничего не уходит.