// инструмент

Cron-выражения онлайн

Вставь выражение из crontab, Spring или Quartz: инструмент перескажет его по-русски и покажет ближайшие запуски по твоему времени, по UTC или по Москве.

примеры: */5 * * * *0 * * * *0 3 * * *0 9 * * 1-50 0 1 * *0 0 9 * * MON-FRI

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

Формат cron-выражения

Пять полей через пробел: минута (0–59), час (0–23), день месяца (1–31), месяц (1–12 или JAN–DEC) и день недели (0–7 или SUN–SAT, 0 и 7 — воскресенье). Так пишут в crontab, GitHub Actions и Kubernetes. В Spring и Quartz перед ними стоит поле секунд, а в Quartz после них может идти год.

Звёздочка, запятая, дефис и шаг

* — любое значение. Запятая перечисляет: 0,30. Дефис задаёт диапазон включительно: 9-18. Косая черта — шаг: */15 в минутах значит каждые 15 минут, 0-30/10 — 0, 10, 20 и 30-я минута. Знак ? в Spring и Quartz ставят в день месяца или день недели вместо звёздочки.

Число и день недели вместе

Если в crontab заданы и число, и день недели, хватает совпадения одного из них: 0 9 1 * 1 сработает 1-го числа и ещё каждый понедельник. В Spring нужны оба: 0 0 9 1 * 1 — только 1-е числа, выпавшие на понедельник. Quartz такое выражение не примет: в одном из этих полей должен стоять ?.

Часовой пояс

cron считает время по часам сервера. Если на сервере UTC, 0 9 * * * сработает в 12:00 по Москве. GitHub Actions по умолчанию считает расписание по UTC. В Kubernetes пояс задают полем timeZone, в Spring — параметром zone.

Дальше

  • crontab в Linux: как открыть расписание, почему скрипт не запускается из cron и где смотреть журнал.
  • Таймеры systemd: расписание, которое пишет вывод в журнал и догоняет пропущенные запуски.
  • Unix time конвертер: timestamp в дату и обратно.

Примеры cron-выражений

Нажми на выражение, чтобы открыть его в инструменте и увидеть ближайшие запуски.

crontab, Linux, GitHub Actions, Kubernetes
выражениекогда сработает
* * * * * каждую минуту
*/5 * * * * каждые 5 минут
*/15 * * * * каждые 15 минут
0 * * * * в начале каждого часа
30 * * * * каждый час в 30 минут
0 */2 * * * каждые 2 часа с 0:00 до 22:00
0 */6 * * * каждый день в 0:00, 6:00, 12:00 и 18:00
0 0 * * * каждый день в 0:00
0 3 * * * каждый день в 3:00
0 9,13,18 * * * каждый день в 9:00, 13:00 и 18:00
0 9 * * 1-5 по будням в 9:00
30 8 * * 1 по понедельникам в 8:30
0 10 * * 6,0 по выходным в 10:00
*/15 9-18 * * 1-5 каждые 15 минут с 9:00 до 18:45, по будням
0 0 1 * * 1-го числа каждого месяца в 0:00
0 0 1 1 * 1 января в 0:00
@reboot один раз при запуске cron, то есть при загрузке системы
Spring и Quartz: первое поле — секунды
выражениекогда сработает
*/30 * * * * * каждые 30 секунд
0 */10 * * * * каждые 10 минут
0 0 * * * * в начале каждого часа
0 0 3 * * * каждый день в 3:00
0 0 9 * * MON-FRI по будням в 9:00
0 0 12 * * ? каждый день в 12:00
0 15 10 ? * MON-FRI по будням в 10:15
0 0 0 1 1 ? 2027 1 января в 0:00, в 2027 году

Где пишут cron-выражения

Одно и то же расписание — по будням в 3:00 — в четырёх местах. В Spring поле секунд стоит первым.

crontab (crontab -e)

# минута час день месяц день_недели команда
0 3 * * 1-5 /usr/local/bin/backup.sh

Spring

@Scheduled(cron = "0 0 3 * * MON-FRI", zone = "Europe/Moscow")
public void backup() {
    // по будням в 3:00 по Москве
}

GitHub Actions

on:
  schedule:
    - cron: '0 3 * * 1-5'  # время по UTC

Kubernetes CronJob

apiVersion: batch/v1
kind: CronJob
spec:
  schedule: "0 3 * * 1-5"
  timeZone: "Europe/Moscow"
  # jobTemplate — как в любом CronJob