0 0 1 * *Pola
| Minuta | 0 | 0 |
|---|---|---|
| Godzina | 0 | 0 |
| Dzień miesiąca | 1 | 1 |
| Miesiąc | * | dowolna |
| Dzień tygodnia | * | dowolna |
Gdzie go użyć
| crontab | 0 0 1 * * /path/to/script.sh |
|---|---|
| GitHub Actions | - cron: "0 0 1 * *" (on.schedule) |
| Kubernetes CronJob | schedule: "0 0 1 * *" |
crontab działa w strefie czasowej serwera; GitHub Actions zawsze używa UTC.
Warto wiedzieć
0 0 1 * * uruchamia się o północy 1. dnia każdego miesiąca, tak samo jak @monthly. Zwykle trafiają tu rozliczenia, faktury i raporty miesięczne, więc zdecyduj, która strefa czasowa wyznacza „1. dzień”: gdy na serwerze w UTC jest już 1., w obu Amerykach wciąż trwa ostatni dzień poprzedniego miesiąca. Raport za poprzedni miesiąc powinien liczyć zakres dat od daty uruchomienia, a nie zakładać 30 czy 31 dni.
Vixie cron i cronie nie mają składni dla ostatniego dnia miesiąca; uruchamiaj o 0 0 28-31 * * i sprawdzaj warunek w poleceniu, np. test $(date -d tomorrow +\%d) = 01 && /path/to/script.sh. Quartz i niektóre harmonogramy chmurowe obsługują zamiast tego L. Uważaj na regułę OR: 0 0 1 * 1 uruchamia się 1. dnia miesiąca i w każdy poniedziałek, a nie tylko w poniedziałki wypadające 1. dnia.