Cron-выражение: первый понедельник месяца

0 9 1-7 * * запускается в первый понедельник месяца. Ниже — значение каждого поля, время следующего запуска и примеры использования в crontab, GitHub Actions, Kubernetes и Node.js.

Обновлено

0 9 1-7 * *
Cron-выражение
Первый понедельник месяца
Расписание

Открыть в генераторе Cron-выражений →

Что означает 0 9 1-7 * *

Cron читает пять полей слева направо: минута, час, день месяца, месяц и день недели. Для первого понедельника месяца они такие:

ПолеЗначениеСмыслДопустимо
Минута000–59
Час909:000–23
День месяца1-7с 1 по 71–31
Месяц*каждый месяц1–12
День недели*каждый день недели0–6 (Вс–Сб)

Следующие запуски

Вычисляется в вашем браузере для вашего часового пояса. На сервере cron использует часовой пояс сервера (часто UTC).

  1. Включите JavaScript, чтобы увидеть время следующих запусков.

Типичные сценарии

  • Ежемесячные встречи команды
  • Ежемесячные отчёты в рабочий день

Важно знать

Стандартный cron не умеет задавать «первый понедельник» напрямую. Запускайте в 9:00 в дни с 1 по 7 и пусть команда выполняется только в понедельник: 0 9 1-7 * * [ "$(date +\%u)" = 1 ] && /job.sh. Не пишите 0 9 1-7 * 1: когда заданы оба поля дня, классический cron запускается, если совпадает любое из них, и тогда задача будет выполняться каждый понедельник.

Использование в crontab, GitHub Actions, Kubernetes и Node.js

crontab (crontab -e):

0 9 1-7 * * /usr/local/bin/my-job.sh >> /var/log/my-job.log 2>&1

GitHub Actions (время в UTC):

on:
  schedule:
    - cron: '0 9 1-7 * *'

Kubernetes CronJob:

apiVersion: batch/v1
kind: CronJob
metadata:
  name: my-job
spec:
  schedule: "0 9 1-7 * *"
  concurrencyPolicy: Forbid
  jobTemplate:
    spec:
      template:
        spec:
          restartPolicy: OnFailure
          containers:
            - name: my-job
              image: alpine:3
              command: ["sh", "-c", "echo running"]

Node.js (node-cron):

import cron from 'node-cron';
cron.schedule('0 9 1-7 * *', () => {
  // your job
});

Похожие расписания

Часто задаваемые вопросы

Какое cron-выражение для первого понедельника месяца?
0 9 1-7 * *. Запуск в 0 минут; 09:00; с 1 по 7 число.
Какой часовой пояс использует cron?
Классический cron использует местный часовой пояс сервера, а многие серверы работают в UTC. GitHub Actions всегда использует UTC. Kubernetes CronJob использует часовой пояс контроллера, если только вы не задали spec.timeZone (например, Europe/Berlin).
Как проверить cron-выражение?
Вставьте его в генератор Cron-выражений, чтобы увидеть описание простыми словами и время следующих запусков, а затем проверьте лог задачи после первого запланированного запуска.