30 2 * * *Pola
| Minuta | 30 | 30 |
|---|---|---|
| Godzina | 2 | 2 |
| Dzień miesiąca | * | dowolna |
| Miesiąc | * | dowolna |
| Dzień tygodnia | * | dowolna |
Gdzie go użyć
| crontab | 30 2 * * * /path/to/script.sh |
|---|---|
| GitHub Actions | - cron: "30 2 * * *" (on.schedule) |
| Kubernetes CronJob | schedule: "30 2 * * *" |
crontab działa w strefie czasowej serwera; GitHub Actions zawsze używa UTC.
Warto wiedzieć
30 2 * * * uruchamia się codziennie o 02:30 czasu serwera, to klasyczna pora na kopie zapasowe, bo ruch jest wtedy mały. W wielu strefach czasowych wypada ona w trakcie zmiany czasu: wiosną godzina 02:30 lokalnie w ogóle nie występuje, a jesienią zdarza się dwa razy. Vixie cron i cron w Debianie to kompensują: pominięte zadanie uruchamiają tuż po przeskoku, a powtórzone tylko raz, ale inne harmonogramy mogą tego nie robić.
Unikniesz problemu, planując zadania poza godzinami 01:00–03:00, uruchamiając serwer w UTC albo ustawiając CRON_TZ=UTC w cronie. Kubernetes CronJob używa strefy czasowej kontrolera, chyba że ustawisz spec.timeZone, a GitHub Actions zawsze używa UTC. Nocne kopie zapasowe mogą trwać długo, więc użyj flock -n, loguj wyjście ze znacznikami czasu i testuj odtwarzanie, a nie tylko kody wyjścia. Sąsiednia pora to 30 3 * * *.