// инструмент
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-выражений
Нажми на выражение, чтобы открыть его в инструменте и увидеть ближайшие запуски.
| выражение | когда сработает |
|---|---|
* * * * * | каждую минуту |
*/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, то есть при загрузке системы |
| выражение | когда сработает |
|---|---|
*/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