Генератор crontab

Выберите Linux, Spring или Quartz, соберите расписание и скопируйте выражение или всю строку. Разобрать уже готовое выражение

Разобрать уже готовое выражение

Строка crontab из расписания

Эта страница собирает Linux crontab: пять полей или сокращение вроде @daily. Вы выбираете, как часто запускать, можете добавить команду и копируете строку. Задание она не ставит. Формат пишет и Spring, и Quartz: секунды 0 впереди, а у Quartz ещё ? и имена вроде MON-FRI. Уже готовое выражение читает Разобрать уже готовое выражение. Метки времени — метка времени Unix.

Как пользоваться

  1. Формат — Linux Crontab (5), Spring @Scheduled (6) или Quartz (6–7). Строка под меню называет порядок полей и какое число означает воскресенье. Расписание открывается на Каждый день. Час равен 2, Минута равна 0, поэтому выражение — 0 2 * * *, а фраза говорит: каждый день в 02:00.
  2. Расписание может быть Каждую минуту, Каждые N минут, Каждый час, Каждые N часов, Каждый день, Дни недели, День месяца, Раз в год или Сокращение (@daily). Каждые N минут показывает Каждые и слово минут. Каждый час показывает Минута. Каждые N часов показывает Минута и Каждые, со словом часов. Каждый день показывает Час и Минута. Дни недели показывает Час, Минута и кнопки с понедельника по воскресенье; хотя бы одна должна быть включена. День месяца показывает Час, Минута и День. Раз в год показывает ещё Месяц. Сокращение перечисляет @reboot, @hourly, @daily, @weekly, @monthly и @yearly. Эти сокращения видны только при формате Linux. Spring и Quartz оставляют то же время и добавляют секунды.
  3. Команда может быть пустой. /usr/bin/backup.sh ставится после выражения в Строке crontab. Считать по мере ввода включено. Если снять флажок, Собрать выполняется один раз.
  4. Копировать выражение копирует пять полей или сокращение. Копировать строку копирует выражение и команду. Копировать результат копирует фразу и 10 ближайших запусков. Показать пример ставит Дни недели на понедельник–пятницу в 02:00 и команду /usr/bin/backup.sh. Выражение — 0 2 * * 1-5, строка — 0 2 * * 1-5 /usr/bin/backup.sh. Кнопки под формой подставляют ещё: каждые 15 минут */15 * * * *, каждый день в 02:00 с той же командой 0 2 * * * /usr/bin/backup.sh, по будням в 09:00 0 9 * * 1-5, в выходные в 09:00 0 9 * * 0,6, пн ср пт в 09:00 0 9 * * 1,3,5, 1-е число в полночь 0 0 1 * *, 1 января 0 0 1 1 *, каждые 2 часа в минуту 30 30 */2 * * *, @daily, @weekly (воскресенье в 00:00) и @reboot. Ссылка рядом открывает разбор. Очистить всё ставит Каждую минуту и очищает команду. Выражение — * * * * *.

Что значат поля

Выражение — это минута, час, день месяца, месяц, день недели. Воскресенье — 0, понедельник — 1, суббота — 6. Непрерывные дни пишутся через дефис, поэтому понедельник–пятница — это 1-5. Отдельные дни — через запятую, например 1,3,5. Все семь дней становятся *. Формат Linux пишет эти пять полей. Формат Spring ставит 0 впереди как секунды и сохраняет номера дней. Формат Quartz ставит 0 впереди, пишет ? в дне или дне недели и переводит номера в SUN–SAT, потому что в Quartz воскресенье — это 1.

Каждые N минут — это */N * * * *. Каждые N часов — минута M часов 0, N, 2N и далее: M */N * * *. 31-е число бывает только в месяцах, где есть 31-е. Февраль пропускается. Команда не проверяется. Она в одной строке. Страница не ставит задание.

@reboot срабатывает при загрузке и не имеет времени на часах, поэтому нет 10 ближайших запусков. @hourly — это 0 * * * *. @daily — это 0 0 * * *. @weekly — воскресенье в 00:00, 0 0 * * 0, а не понедельник. @monthly — это 0 0 1 * *. @yearly — это 0 0 1 1 *. Фраза говорит «То же, что» и эти пять полей. 10 ближайших запусков берёт местное время этого компьютера. Машина, где крутится crontab, может быть в другом поясе.

Где это нужно

  • Резервная копия каждый день в 02:00: 0 2 * * * /usr/bin/backup.sh.
  • Задача по будням в 09:00: 0 9 * * 1-5.
  • @daily, когда полночь на этой машине — нужное время.

Вопросы

Почему @weekly — это воскресенье?

Vixie cron задаёт @weekly как воскресенье в 00:00. Для понедельника выберите Дни недели и включите понедельник. Если время остаётся 00:00, выражение — 0 0 * * 1.

Здесь получится выражение Quartz?

Да. Поставьте формат Quartz. Каждый день в 02:00 станет 0 0 2 * * ?. Понедельник–пятница станет MON-FRI. Разобрать уже готовое выражение по-прежнему читает выражение, которое вы вставляете.

Ближайший запуск не совпадает с UTC.

10 ближайших запусков берёт часы этого компьютера. Crontab на сервере берёт пояс сервера.

31-е не появляется в феврале.

В этом месяце нет 31-го, он пропускается. Список показывает следующий месяц, где этот день есть.