0 9 1-7 * * Otwórz w parserze wyrażeń cron Zapis 0 9 1-7 * 1 nie działa: gdy oba pola dnia są ustawione, cron uruchamia zadanie, jeśli pasuje którekolwiek, czyli w dni 1–7 i w każdy poniedziałek. Quartz i Spring obsługują MON#1.
Pole po polu
| Pole | Wartość | Pasuje do |
|---|---|---|
| Minuta | 0 | 0 |
| Godzina | 9 | 9 |
| Dzień miesiąca | 1-7 | 1, 2, 3, 4, 5, 6, 7 |
| Miesiąc | * | Każda wartość |
| Dzień tygodnia | * | Każda wartość |
Najbliższe uruchomienia
Przykład: pierwsze 6 uruchomień po 1 stycznia 2026 (UTC).
- pon., 5 sty 2026, 09:00
- pon., 2 lut 2026, 09:00
- pon., 2 mar 2026, 09:00
- pon., 6 kwi 2026, 09:00
- pon., 4 maj 2026, 09:00
- pon., 1 cze 2026, 09:00
Gotowe wersje
0 9 1-7 * * [ "$(date +\%u)" = 1 ] && /path/to/command Dodaj wiersz przez crontab -e. Działa w strefie czasowej serwera, chyba że ustawiono CRON_TZ lub TZ.
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"] Ustaw spec.timeZone (Kubernetes 1.27+); bez tego harmonogram korzysta ze strefy controller managera, zwykle UTC.
on:
schedule:
- cron: '0 9 1-7 * *'
workflow_dispatch: GitHub Actions zawsze używa UTC, akceptuje odstępy od 5 minut i przy dużym obciążeniu może uruchamiać zadania z opóźnieniem.
0 0 9 ? * MON#1 Quartz ma sekundy na początku i wymaga ? w dniu miesiąca lub dniu tygodnia. Dni mają numery 1–7 od niedzieli, więc bezpieczniej używać nazw.
@Scheduled(cron = "0 0 9 * * MON#1") Spring @Scheduled(cron = …) przyjmuje sześć pól: sekundy i zwykłe pięć.
FAQ
› Dlaczego 0 9 1-7 * 1 uruchamia się za często?
Gdy ograniczone są i dzień miesiąca, i dzień tygodnia, cron łączy je przez LUB, więc działa od 1. do 7. dnia i dodatkowo w każdy poniedziałek.
› W jakiej strefie czasowej działa 0 9 1-7 * *?
Cron używa strefy czasowej maszyny lub usługi, która go uruchamia. W Linuksie to strefa systemowa, chyba że ustawiono CRON_TZ lub TZ; CronJoby w Kubernetes obsługują spec.timeZone; GitHub Actions zawsze używa UTC.
› Jak sprawdzić harmonogram przed wdrożeniem?
Otwórz 0 9 1-7 * * w parserze wyrażeń cron w tym serwisie. Objaśni każde pole i pokaże najbliższe uruchomienia w czasie lokalnym lub UTC, bezpośrednio w przeglądarce.