Summary

Ten generator wyrażeń cron buduje i sprawdza standardowe harmonogramy cron z pięciu pól, bezpośrednio w przeglądarce. Wybierz gotowy wzorzec albo edytuj pola: minuta, godzina, dzień miesiąca, miesiąc i dzień tygodnia. Narzędzie opisuje harmonogram zwykłym językiem, pokazuje każde pole szczegółowo i wylicza kolejne pięć czasów uruchomienia w UTC albo w Twojej strefie czasowej. Stosuje standardową regułę łączenia dnia miesiąca z dniem tygodnia. Nic nie jest wysyłane na serwer i nie trzeba się rejestrować.

Darmowe narzędzie cron

Generator wyrażeń cron: buduj i sprawdzaj harmonogramy w kilka sekund

Wybierz gotowy wzorzec albo wpisz pięć pól. Dostajesz opis zwykłym językiem, rozbicie pole po polu i kolejnych pięć czasów uruchomienia, wszystko liczone lokalnie.

Generator wyrażeń cron

Zacznij od gotowego wzorca albo edytuj dowolne z pięciu pól. Wyrażenie, jego znaczenie i kolejne pięć czasów uruchomienia aktualizują się podczas pisania.

0-59
0-23
1-31
1-12 lub JAN-DEC
0-7 lub SUN-SAT
0 9 * * *

Pole po polu

    Następne 5 uruchomień

      Linia crontab

      Jak to działa

      Co narzędzie robi z pięcioma polami

      Analizuje każde pole osobno

      Każde pole przyjmuje pojedynczą wartość, listę (1,15), zakres (1-5), krok (*/10) albo ich mieszankę. Nazwy miesięcy i dni, takie jak JAN albo MON-FRI, też działają. Wartości poza zakresem i odwrócone zakresy są zgłaszane przy konkretnym polu, które jest błędne.

      Stosuje prawdziwą regułę dopasowania cron

      Czas pasuje, gdy minuta, godzina i miesiąc są na Twoich listach, a test dnia jest zaliczony. Jeśli dzień miesiąca i dzień tygodnia są oba ograniczone, cron przyjmuje którykolwiek z nich. Jeśli któreś z nich zaczyna się od gwiazdki, muszą pasować oba.

      Przechodzi kalendarz, żeby wyliczyć przyszłe uruchomienia

      Od bieżącej minuty skrypt przechodzi dzień po dniu, zostawia dni, które przechodzą test, a potem wypisuje pasujące godziny i minuty po kolei. Sprawdza do ośmiu lat w przód, co wystarcza, żeby znaleźć harmonogram na 29 lutego.

      Składnia

      Pięć pól w kolejności, w jakiej czyta je cron

      Linia cron to pięć pól oddzielonych spacjami, po których następuje polecenie. Kolejność się nie zmienia: minuta, godzina, dzień miesiąca, miesiąc, dzień tygodnia. Większość błędów bierze się z zamiany dwóch pierwszych, przez co harmonogram na 14:00 uruchamia się w minucie 14 każdej godziny. Czytaj od lewej do prawej i wypowiedz pola na głos, zanim cokolwiek zatwierdzisz.

      • Minuta: 0-59
      • Godzina: 0-23, zegar 24-godzinny
      • Dzień miesiąca: 1-31
      • Miesiąc: 1-12 albo JAN-DEC
      • Dzień tygodnia: 0-7 albo SUN-SAT, gdzie 0 i 7 oznaczają niedzielę
      • Symbole: * dla każdej wartości, , dla listy, - dla zakresu, / dla kroku
      Szafa serwerowa z zielonymi i turkusowymi diodami statusu w przyciemnionym pomieszczeniu
      Tu psuje się w praktyce

      Pułapki cron, które kosztują cały weekend

      Środowisko jest prawie puste

      Cron uruchamia zadania z minimalnym PATH i bez profilu powłoki. Skrypt, który działa w terminalu, może po cichu zawieść w cronie. Używaj ścieżek bezwzględnych dla polecenia i każdego pliku, który czyta, a wyjście przekieruj do pliku logu, żeby widzieć błędy.

      Znak procenta kończy polecenie

      W linii crontab niezamieniony znak % jest traktowany jako znak nowej linii, a wszystko po nim trafia do polecenia jako wejście. Formaty dat, takie jak date +%F, wymagają zamiany każdego % na znak poprzedzony ukośnikiem wstecznym. Umieść polecenie w skrypcie, a problem zniknie.

      Co minutę to rzadko to, czego chcesz

      Zadanie uruchamiane co minutę, które trwa 90 sekund, będzie nakładać się samo na siebie. Zabezpiecz długie zadania blokadą albo przenieś je do kolejki. Jeśli potrzebujesz czegoś co kilka minut, krok taki jak */5 jest łagodniejszy i mniej obciąża to, co zadanie wywołuje.

      Strefa czasowa nie jest Twoja

      Crontab używa strefy czasowej serwera. Hostowane harmonogramy zwykle działają w UTC. Zadanie ustawione na 09:00 może wystartować o 17:00 w Tajpej albo o 04:00 w Bangkoku, zależnie od tego, gdzie stoi maszyna. Zapisz strefę czasową w komentarzu obok linii.

      Dzień tygodnia i dzień miesiąca łączą się jako LUB

      Ograniczenie obu pól nie zawęża harmonogramu, tylko go poszerza. Jeśli chcesz pierwszy poniedziałek miesiąca, żadne wyrażenie pięciopolowe nie powie tego wprost. Uruchamiaj zadanie w każdy poniedziałek i pozwól skryptowi sprawdzić, czy data to 7 lub mniej.

      Testuj harmonogram przed zadaniem

      Najpierw sprawdź tu kolejne pięć uruchomień, potem uruchom polecenie ręcznie z tym samym środowiskiem. Dwa krótkie sprawdzenia wygrywają z debugowaniem nocnej kopii zapasowej, która nigdy nie ruszyła. Zacznij od nieszkodliwego polecenia, na przykład zapisania daty do pliku.

      Pytania o wyrażenia cron

      Czy ten generator wyrażeń cron jest darmowy i czy wysyła gdzieś mój harmonogram?
      Jest darmowy, nie wymaga rejestracji i działa w całości w przeglądarce. Wyrażenie, które wpisujesz, analizuje lokalnie mały skrypt na tej stronie. Nic nie jest wysyłane. Jedyne zapytanie sieciowe to anonimowy licznik, który rejestruje, że ktoś użył narzędzia.
      Ile pól ma wyrażenie cron?
      Pięć w standardowym Unix cron: minuta, godzina, dzień miesiąca, miesiąc, dzień tygodnia, w tej kolejności. Niektóre harmonogramy dodają szóste pole. Quartz umieszcza sekundy na początku, a AWS EventBridge dodaje pole roku i używa znaku zapytania. To narzędzie obsługuje tylko format pięciopolowy, więc wklej wynik do jednego z tych systemów i sprawdź ich dokumentację pod kątem dodatkowego pola.
      Dlaczego moje zadanie uruchamia się w dni, których się nie spodziewałem, gdy ustawiłem dzień miesiąca i dzień tygodnia?
      Bo standardowy cron traktuje oba pola jako LUB, gdy oba są ograniczone. Wyrażenie 0 0 13 * 5 uruchamia się każdego 13. dnia miesiąca i w każdy piątek, a nie tylko w piątek trzynastego. Jeśli jedno z pól to zwykła gwiazdka albo zaczyna się od gwiazdki, sprawdzenie zamienia się w AND, czyli oba pola muszą pasować. Lista podglądu powyżej stosuje tę regułę, więc zobaczysz prawdziwe daty przed wdrożeniem.
      Która strefa czasowa obowiązuje w czasach kolejnych uruchomień?
      Ty wybierasz. Domyślnie jest UTC, bo większość chmurowych harmonogramów działa w UTC. Druga opcja używa strefy czasowej przeglądarki. Twój serwer może używać trzeciej, więc sprawdź ustawienie strefy czasowej maszyny albo dokumentację harmonogramu, zanim zaufasz godzinom.
      Czy to samo wyrażenie działa w GitHub Actions, Kubernetes i crontab?
      Pięć pól znaczy we wszystkich trzech to samo. GitHub Actions liczy harmonogramy w UTC, a jego najkrótszy dozwolony interwał to co 5 minut. Kubernetes CronJob używa tych samych pięciu pól i pozwala ustawić strefę czasową w nowszych wersjach. Klasyczny crontab używa strefy czasowej maszyny. Specjalne ciągi, takie jak @daily, akceptuje wiele implementacji crontab, ale nie każdy harmonogram, więc w razie wątpliwości wybierz formę pięciopolową.
      Co oznacza krok, taki jak */15 albo 10/20?
      Krok wybiera co n-tą wartość w zakresie. W polu minut */15 oznacza 0, 15, 30 i 45. Wartość początkowa z krokiem, taka jak 10/20, działa od tej wartości do końca pola: minuty 10, 30 i 50. Zakres z krokiem, jak 8-18/2 w polu godziny, oznacza 8, 10, 12, 14, 16 i 18.
      Czy mogę użyć nazw, takich jak MON-FRI albo JAN?
      Tak. Pola miesiąca i dnia tygodnia akceptują trzyliterowe angielskie nazwy, w dowolnej wielkości liter. Liczby też działają: miesiące od 1 do 12, dni tygodnia od 0 do 7, gdzie zarówno 0, jak i 7 oznaczają niedzielę.
      Co się dzieje przy zmianie czasu letniego i zimowego?
      To zależy od harmonogramu. Gdy zegary przeskakują do przodu, zadanie ustawione w pominiętej godzinie może zostać pominięte albo uruchomione z opóźnieniem. Gdy zegary cofają się, zadanie ustawione w powtórzonej godzinie może uruchomić się dwa razy. Jeśli zadanie musi uruchomić się dokładnie raz dziennie, ustaw je w UTC albo na godzinę, która nie leży blisko zmiany.

      Szukasz następnej rzeczy do zbudowania?

      Zadanie cron to dobry pierwszy backend dla projektu pobocznego. Darmowy generator na stronie głównej podaje gotową specyfikację projektu, ze stosem i zakresem, jednym kliknięciem.