DevToolPal
NL

Cron-expressie

De eerste maandag van elke maand

De taak start om 09:00 op dag 1–7 en een shell-test laat alleen de maandag door.

0 9 1-7 * * Openen in de cron-parser

0 9 1-7 * 1 werkt niet: als beide dagvelden zijn ingesteld, draait cron als één van beide klopt, dus op dag 1–7 én elke maandag. Quartz en Spring ondersteunen MON#1.

Veld voor veld

Veld Waarde Komt overeen met
Minuut 0 0
Uur 9 9
Dag van de maand 1-7 1, 2, 3, 4, 5, 6, 7
Maand * Elke waarde
Dag van de week * Elke waarde

Volgende uitvoeringen

Voorbeeld: de eerste 6 uitvoeringen na 1 januari 2026 (UTC).

  1. ma 5 jan 2026, 09:00
  2. ma 2 feb 2026, 09:00
  3. ma 2 mrt 2026, 09:00
  4. ma 6 apr 2026, 09:00
  5. ma 4 mei 2026, 09:00
  6. ma 1 jun 2026, 09:00

Kant-en-klare versies

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

Voeg de regel toe met crontab -e. Hij draait in de tijdzone van de server, tenzij CRON_TZ of TZ is ingesteld.

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"]

Stel spec.timeZone in (Kubernetes 1.27+); anders volgt het schema de tijdzone van de controller manager, meestal UTC.

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

GitHub Actions gebruikt altijd UTC, accepteert intervallen van minstens 5 minuten en kan geplande runs bij drukte later starten.

Quartz
0 0 9 ? * MON#1

Quartz zet de seconden vooraan en vereist ? in de dag van de maand of de dag van de week. Dagen lopen van 1 tot 7 vanaf zondag, dus namen zijn veiliger.

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

Spring @Scheduled(cron = …) gebruikt zes velden: seconden en dan de gebruikelijke vijf.

Veelgestelde vragen

› Waarom draait 0 9 1-7 * 1 te vaak?

Cron combineert dag van de maand en dag van de week met OF als beide beperkt zijn, dus draait hij op de 1e tot en met de 7e én elke maandag.

› In welke tijdzone draait 0 9 1-7 * *?

Cron gebruikt de tijdzone van de machine of dienst die hem uitvoert. Op Linux is dat de systeemtijdzone, tenzij CRON_TZ of TZ is ingesteld; Kubernetes-CronJobs accepteren spec.timeZone; GitHub Actions gebruikt altijd UTC.

› Hoe controleer ik het schema vóór het uitrollen?

Open 0 9 1-7 * * in de cron-parser op deze site. Die legt elk veld uit en toont de volgende uitvoeringen in je lokale tijd of in UTC, gewoon in je browser.