Генератор cron

Выберите шаблон или введите строку crontab. Инструмент объяснит каждое из пяти полей, простыми словами скажет, когда выполняется задание, и покажет ближайшие запуски, чтобы вы могли проверить расписание до того, как оно попадёт на сервер.

Типовые расписания
Редактировать каждое поле
Когда запускается Каждые 15 минут, каждый день.

Заданиям cron нужен сервер, который всегда включён. Небольшой VPS выполняет резервное копирование, отчёты и скрипты круглосуточно. Сейчас от 3,02 € в месяц, на выбор: 2 226 серверов.

Ваша строка crontab

На сервере выполните crontab -e, вставьте строку со своей командой и сохраните. crontab -l выводит список ваших заданий.

crontab -e
*/15 * * * * /path/to/script.sh >> /var/log/job.log 2>&1
ПолеЗначениеСоответствует
Минута*/150, 15, 30 и 45
Час*любое значение
День месяца*любое значение
Месяц*любое значение
День недели*любое значение

Работает в вашем браузере: ничего из введённого не отправляется на сервер.

Как это считается

Строка crontab начинается с пяти полей, разделённых пробелами, за которыми следует команда. Cron проверяет их каждую минуту и запускает команду, когда совпадают минута, час, день месяца, месяц и день недели.

┌─ Минута
│ ┌─ Час
│ │ ┌─ День месяца
│ │ │ ┌─ Месяц
│ │ │ │ ┌─ День недели
* * * * * /path/to/command

Два поля дней сочетаются так, что многих это удивляет: если ограничены оба, задание запускается, когда совпадает любое из них. 0 0 13 * 5 запускается и каждого 13-го числа, и каждую пятницу, а не только в пятницу 13-го. Если одно из двух начинается с *, должны совпасть оба.

Пять полей

ПолеДопустимые значения
Минута0–59
Час0–23
День месяца1–31
Месяц1–12 или JAN–DEC
День недели0–7 или SUN–SAT (0 и 7 — воскресенье)

Специальные символы

  • * соответствует любому значению поля.
  • , перечисляет значения: 1,15 — это 1-е и 15-е.
  • - задаёт диапазон: 1-5 в поле дня недели — с понедельника по пятницу.
  • / задаёт шаг: */10 — каждое десятое значение, 5/10 — каждое десятое, начиная с 5, 9-17/2 — каждый второй час с 9 до 17.
  • @hourly, @daily, @weekly, @monthly и @yearly заменяют все пять полей; @reboot запускается один раз при старте сервера.

Пример

30 2 * * 1-5 запускается в 02:30 с понедельника по пятницу: минута 30, час 2, любой день месяца, любой месяц и дни недели с 1 по 5. Записанная в crontab как 30 2 * * 1-5 /usr/local/bin/backup.sh, она запускает резервное копирование каждую рабочую ночь.

Вопросы

Что означает */5 в cron?

Каждое пятое значение поля. В поле минут */5 запускает задание в минуты 0, 5, 10 и так далее до 55: каждые пять минут. */15 — каждые четверть часа, а */2 в поле часов — каждый второй час, начиная с полуночи.

Как добавить задание cron на сервере Linux?

Выполните crontab -e от имени пользователя, под которым должно работать задание, добавьте одну строку с пятью полями и командой, затем сохраните и закройте редактор. crontab -l показывает задания, а общесистемные задания записываются в файл в /etc/cron.d с именем пользователя после пяти полей.

Какой часовой пояс использует cron?

Часовой пояс самого сервера, на VPS обычно UTC. 0 3 * * * на сервере с UTC запускается в 04:00 по Берлину зимой и в 05:00 летом. Некоторые реализации cron, например cronie, принимают строку CRON_TZ= над заданиями; иначе пересчитывайте время сами.

Что выбрать: cron или таймер systemd?

Cron проще и работает везде. Таймеру systemd нужны два небольших файла, но он записывает каждый запуск в журнал, может нагнать запуски, пропущенные, пока сервер был выключен (Persistent=true), и не даёт двум копиям одного задания работать одновременно.