DevToolPal
DE

Cron-Ausdruck

Am ersten Montag jedes Monats

Der Job startet an den Tagen 1–7 um 09:00, und ein Shell-Test lässt nur den Montag durch.

0 9 1-7 * * Im Cron-Parser öffnen

0 9 1-7 * 1 funktioniert nicht: Sind beide Tagesfelder gesetzt, läuft cron, wenn eines davon passt – also an den Tagen 1–7 und an jedem Montag. Quartz und Spring unterstützen MON#1.

Feld für Feld

Feld Wert Trifft zu auf
Minute 0 0
Stunde 9 9
Tag des Monats 1-7 1, 2, 3, 4, 5, 6, 7
Monat * Jeder Wert
Wochentag * Jeder Wert

Nächste Ausführungen

Beispiel: die ersten 6 Ausführungen nach dem 1. Januar 2026 (UTC).

  1. Mo., 5. Jan. 2026, 09:00
  2. Mo., 2. Feb. 2026, 09:00
  3. Mo., 2. März 2026, 09:00
  4. Mo., 6. Apr. 2026, 09:00
  5. Mo., 4. Mai 2026, 09:00
  6. Mo., 1. Juni 2026, 09:00

Fertige Varianten

crontab
0 9 1-7 * * [ "$(date +\%u)" = 1 ] && /path/to/command

Fügen Sie die Zeile mit crontab -e hinzu. Sie läuft in der Zeitzone des Servers, sofern CRON_TZ oder TZ nicht gesetzt ist.

Kubernetes CronJob
apiVersion: batch/v1
kind: CronJob
metadata:
  name: first-monday-of-month
spec:
  schedule: "0 9 1-7 * *"
  timeZone: "Etc/UTC"
  concurrencyPolicy: Forbid
  jobTemplate:
    spec:
      template:
        spec:
          restartPolicy: OnFailure
          containers:
            - name: job
              image: busybox:1.36
              command: ["/bin/sh", "-c", "date; echo run"]

Setzen Sie spec.timeZone (Kubernetes 1.27+); sonst gilt die Zeitzone des Controller Managers, meist UTC.

GitHub Actions
on:
  schedule:
    - cron: '0 9 1-7 * *'
  workflow_dispatch:

GitHub Actions verwendet immer UTC, erlaubt Intervalle ab 5 Minuten und startet geplante Läufe bei hoher Last eventuell verspätet.

Quartz
0 0 9 ? * MON#1

Quartz stellt die Sekunden voran und braucht ? entweder im Tag des Monats oder im Wochentag. Die Tage zählen 1–7 ab Sonntag, Namen sind daher sicherer.

Spring
@Scheduled(cron = "0 0 9 * * MON#1")

Spring @Scheduled(cron = …) erwartet sechs Felder: Sekunden und dann die üblichen fünf.

FAQ

› Warum läuft 0 9 1-7 * 1 zu oft?

Sind Tag des Monats und Wochentag beide eingeschränkt, verknüpft cron sie mit ODER. Der Job läuft also vom 1. bis 7. und zusätzlich jeden Montag.

› In welcher Zeitzone läuft 0 9 1-7 * *?

Cron verwendet die Zeitzone der Maschine oder des Dienstes, der ihn ausführt. Unter Linux ist das die Systemzeitzone, sofern CRON_TZ oder TZ nicht gesetzt ist; Kubernetes-CronJobs akzeptieren spec.timeZone; GitHub Actions nutzt immer UTC.

› Wie prüfe ich den Zeitplan vor dem Deployment?

Öffnen Sie 0 9 1-7 * * im Cron-Parser dieser Website. Er erklärt jedes Feld und listet die nächsten Ausführungen in Ihrer Ortszeit oder in UTC auf, direkt im Browser.