fixmint
PL

Jak czytać wyrażenie cron – pole po polu

Autor: · · czas czytania: 5 min

Wyrażenie cron to krótki wiersz tekstu, który mówi harmonogramowi, kiedy uruchomić zadanie. Typowa postać ma pięć pól oddzielonych spacjami: minuta, godzina, dzień miesiąca, miesiąc i dzień tygodnia. Wiersz 0 9 * * 1-5 oznacza godzinę 09:00 od poniedziałku do piątku. Każde pole to liczba, nazwa, lista, zakres albo krok, albo * oznaczająca każdą wartość. Zadanie uruchamia się o każdej porze, w której wszystkie pola pasują.

Objaśnienie wyrażenia cronCron uruchamia się o złej porzeZrób to za darmo

Pięć pól

PoleDozwolone wartościPrzykład
Minuta0 do 5930 to minuta 30 godziny
Godzina0 do 239 to 09:00, w zegarze 24-godzinnym
Dzień miesiąca1 do 3115 to 15. dzień miesiąca
Miesiąc1 do 12 albo JAN do DEC3 albo MAR to marzec
Dzień tygodnia0 do 6 albo SUN do SAT0 albo SUN to niedziela, 1 to poniedziałek

Niektóre systemy akceptują też 7 jako niedzielę, ale nie wszystkie, więc używaj 0 albo SUN. Cron w tej postaci nie ma pola sekund, więc najmniejszy krok to jedna minuta.

Listy, zakresy, kroki i nazwy

  • oznacza każdą wartość w polu. * * * * uruchamia się co minutę.
  • Lista używa przecinków. 0 9,17 * * * uruchamia się o 09:00 i o 17:00 każdego dnia.
  • Zakres używa myślnika. 1-5 w polu dnia tygodnia oznacza od poniedziałku do piątku.
  • Krok używa ukośnika. */15 w polu minuty oznacza 0, 15, 30 i 45. 10-30/5 oznacza 10, 15, 20, 25 i 30.
  • Nazwy, takie jak MON-FRI, mogą zastąpić liczby. Są łatwiejsze do odczytania, jeśli harmonogram je akceptuje.

Te elementy można łączyć. 0 8-18/2 * * * uruchamia się w minucie 0 co drugą godzinę od 08:00 do 18:00.

Typowe harmonogramy

WyrażenieZnaczenie
* * * * *Co minutę
/15 * * *Co 15 minut
0 * * * *W minucie 0 każdej godziny
0 2 * * *Każdego dnia o 02:00
0 9 * * 1-509:00, od poniedziałku do piątku
0 9,17 * * *09:00 i 17:00 każdego dnia
30 6 1 * *06:30 pierwszego dnia każdego miesiąca
0 0 * * 0Północ w każdą niedzielę
0 0 1 1 *Północ 1 stycznia
/5 9-17 * 1-5Co 5 minut od 09:00 do 17:55, od poniedziałku do piątku

Zwróć uwagę, że 0 0 * * to północ, a 0 12 * * to południe. Pomylenie godziny to jeden z najczęstszych błędów.

Dzień miesiąca i dzień tygodnia

Gdy zarówno pole dnia miesiąca, jak i pole dnia tygodnia są ograniczone, zadanie uruchamia się, gdy pasuje jedno z nich. To klasyczna reguła w Vixie cron i wielu systemach z niego wywodzących się. Zatem 0 0 13 * 5 uruchamia się o północy 13. dnia każdego miesiąca oraz każdego piątku. Często oczekuje się tylko piątku 13., a dostaje się więcej uruchomień, niż planowano.

Jeśli jedno z tych dwóch pól to *, liczy się tylko drugie. Aby uruchomić zadanie w piątek trzynastego, zaplanuj je na każdy piątek i sprawdź datę wewnątrz skryptu. Inne harmonogramy, w tym niektóre usługi chmurowe, mogą stosować inne zasady, więc przeczytaj ich dokumentację.

Strefy czasowe i czas letni

Cron działa według zegara maszyny albo usługi, na której działa, zwykle według czasu lokalnego tej maszyny. Zadanie ustawione na 02:30 uruchomi się o 02:30 według tego zegara. Najpierw sprawdź strefę (w systemie Linux polecenie date ją pokazuje). Jeśli chcesz, by zadania podążały za jednym zegarem wszędzie, wiele zespołów uruchamia serwery w UTC, a niektóre harmonogramy pozwalają ustawić strefę czasową dla każdego zadania.

Czas letni zmienia zegar dwa razy w roku. Wiosną wiele miejsc przeskakuje z 02:00 od razu na 03:00, więc zadanie o 02:30 nie ma kiedy się uruchomić. Jesienią godzina od 01:00 do 01:59 występuje dwa razy. Harmonogramy radzą sobie z tymi przypadkami inaczej. Jedne pomijają zadanie, inne uruchamiają je raz, a jeszcze inne dwa razy. Trzymaj zadania poza wczesnoporannym oknem zmiany czasu albo użyj UTC, jeśli ta różnica ma dla ciebie znaczenie.

Sześć pól i Quartz

Niektóre harmonogramy dodają pole sekund na początku, więc /10 * * * * uruchamia się co 10 sekund. Harmonogram Quartz dla Javy używa sekund, minut, godzin, dnia miesiąca, miesiąca, dnia tygodnia i opcjonalnego roku, i dodaje cztery znaki specjalne:

  • ? oznacza „brak konkretnej wartości”. Quartz wymaga go w polu dnia miesiąca albo dnia tygodnia, w zależności od tego, którego nie ustawiasz.
  • L oznacza ostatni. L w polu dnia miesiąca to ostatni dzień miesiąca, a 6L w polu dnia tygodnia to ostatni piątek.
  • W oznacza najbliższy dzień roboczy. 15W to dzień roboczy najbliższy 15. dnia i nie przeskakuje do innego miesiąca.
  • # oznacza n-ty dzień tygodnia. 6#3 to trzeci piątek.

Quartz numeruje dni inaczej niż postać pięciopolowa. Jego 1 to niedziela, a 7 to sobota, więc od poniedziałku do piątku to 2-6, a nie 1-5. Zawsze sprawdź, jakiego formatu używa twój harmonogram, zanim skopiujesz wiersz.

Typowe błędy

  • */7 w polu minuty. Wartości to 0, 7, 14 i tak dalej, aż do 56. Następna byłaby 63, która nie istnieje, więc po 56 kolejne uruchomienie jest w minucie 0 następnej godziny. Odstęp wynosi tylko cztery minuty, a rozstaw jest nierówny. Użyj kroku, który dzieli 60 bez reszty, na przykład 5, 10, 15 albo 30.
  • 30 lutego. Taka data nie istnieje, więc 0 0 30 2 * nigdy się nie uruchamia. Tak samo jest z 31. dniem w miesiącu, który ma 30 dni. Przy regule „jedno z dwóch” ograniczenie dnia tygodnia może nadal powodować uruchomienia w inne dni, więc sprawdź wynik.
  • Godzina 24 albo minuta 60. To wartości spoza zakresu. Większość harmonogramów odrzuca je przy zapisie, ale nie wszystkie.
  • Oczekiwanie sekund. Wiersz pięciopolowy uruchamia się tylko o pełnych minutach.
  • Mylenie crona z wyrażeniami regularnymi. W cronie oznacza każdą wartość. W wyrażeniu regularnym oznacza powtórzenie poprzedzającego elementu. Do wzorców użyj tester regex, a wiersze cron trzymaj osobno.

Sprawdź kolejne uruchomienia

Zanim polegasz na harmonogramie, przeczytaj wiersz zwykłymi słowami i wypisz kilka najbliższych czasów uruchomienia. Objaśnienie wyrażenia cron robi jedno i drugie. To najszybszy sposób, by wychwycić regułę „jedno z dwóch” albo nietypowy krok.

Szybkie odpowiedzi

Czy pierwsze pole to minuty czy sekundy?

Minuty, w standardowej postaci pięciopolowej. Tylko niektóre harmonogramy sześciopolowe dodają sekundy i umieszczają je na początku.

Dlaczego moje zadanie uruchamia się w piątki i także 13. dnia miesiąca?

Pole dnia miesiąca i pole dnia tygodnia są ustawione, więc zadanie uruchamia się, gdy pasuje jedno z nich. Ustaw jedno pole na *, jeśli chcesz tylko drugiego.

Czy cron używa UTC?

Tylko wtedy, gdy maszyna albo usługa jest ustawiona na UTC. W przeciwnym razie używa lokalnej strefy czasowej tego systemu.

Przetłumaczone z Wersja angielska przy wsparciu AI.

Komentarze

    Brak komentarzy. Bądź pierwszy.

    Twoja ocena (opcjonalnie)

    Twój e-mail nigdy nie jest pokazywany ani zapisywany.

    Okładka: Agentic AI in the BrowserAgentic AI in the Browser

    Przypadki użycia dla przepływów pracy z AI działających w przeglądarce, z naciskiem na prywatność: ta sama idea „zrób to na swoim urządzeniu”, na której zbudowano fixmint.

    $4.99Kup na GumroadPo angielsku