Parser wyrażeń cron

Nasz parser wyrażeń cron tłumaczy harmonogramy cron na zrozumiały język i oblicza nadchodzące terminy wykonania. Wklej dowolne wyrażenie cron, aby natychmiast dowiedzieć się, co oznacza, kiedy uruchomi się ponownie i czy jego składnia jest poprawna. Obsługuje standardowy 5-polowy format crontab (minuta, godzina, dzień miesiąca, miesiąc, dzień tygodnia), rozszerzony format 6-polowy z sekundami oraz popularne skróty, takie jak @daily, @hourly czy @weekly. Całe przetwarzanie odbywa się w Twojej przeglądarce.

star 4.9
auto_awesome AI
New

Parser Cron calculator

Presets:
*/5 * * * *
MIN HOUR DOM MON DOW
0-59 0-23 1-31 1-12 0-6
translate
Human Readable
Every 5 minutes

Field Breakdown

Next 10 Execution Times

lightbulb Tips

  • •*/5 = every 5, using the step operator
  • •0 = Sunday, 1 = Monday ... 6 = Saturday
  • •@daily, @hourly, @weekly are handy shortcuts
  • •Always test cron before deploying

How to Use the Parser Cron

edit

Wprowadź wyrażenie

Wpisz lub wklej wyrażenie cron (5 lub 6 pól). Użyj gotowych skrótów dla popularnych harmonogramów.

translate

Przeczytaj opis

Zobacz opis w języku naturalnym przedstawiający działanie wyrażenia cron.

schedule

Sprawdź kolejne uruchomienia

Zobacz najbliższe 10 terminów wykonania, aby upewnić się, że Twój harmonogram jest poprawny.

build

Zbuduj wyrażenie

Użyj interaktywnego kreatora, aby utworzyć nowe wyrażenie cron od podstaw.

The Formula

Wyrażenie cron to definicja harmonogramu składająca się z 5 pól rozdzielonych spacjami: minuta (0-59), godzina (0-23), dzień miesiąca (1-31), miesiąc (1-12) i dzień tygodnia (0-6, gdzie 0=niedziela). Każde pole może używać znaków wieloznacznych (*), zakresów (1-5), list (1,3,5) oraz wartości kroku (*/5). Niektóre systemy obsługują dodatkowe, 6. pole (sekundy) na początku.

┌───────────── minute (0-59) │ ┌───────────── hour (0-23) │ │ ┌───────────── day of month (1-31) │ │ │ ┌───────────── month (1-12) │ │ │ │ ┌───────────── day of week (0-6, Sun=0) * * * * *

lightbulb Variables Explained

  • * Dowolna wartość (wieloznacznik *)
  • , Separator listy wartości (np. 1,3,5)
  • - Zakres wartości (np. 1-5)
  • / Wartości kroku (np. */5 = co 5)

tips_and_updates Pro Tips

1

*/5 * * * * oznacza co 5 minut — znak / to operator kroku

2

0 0 * * 0 uruchamia się o północy w każdą niedzielę (dzień 0 = niedziela w większości systemów)

3

Używaj @daily, @hourly, @weekly, @monthly jako skrótów dla popularnych harmonogramów

4

Dzień tygodnia: 0=Nie, 1=Pon, 2=Wto, 3=Śro, 4=Czw, 5=Pią, 6=Sob

5

W standardowym cronie dzień miesiąca i dzień tygodnia nie mogą być określone jednocześnie

6

Nazwy miesięcy (JAN-DEC) i dni tygodnia (SUN-SAT) działają w wielu implementacjach crona

7

Zawsze testuj wyrażenia cron przed wdrożeniem — błędy przesunięcia o jeden są częste

Nasz darmowy parser wyrażeń cron tłumaczy harmonogramy cron na tekst zrozumiały dla człowieka i pokazuje nadchodzące terminy wykonania. Sprawdzaj składnię cron, zrozum każde pole i weryfikuj harmonogramy przed wdrożeniem. Obsługuje standardowy format 5-polowy oraz rozszerzony 6-polowy.

Parser wyrażeń Cron - Przetłumacz Cron na język potoczny

Wklej dowolne wyrażenie cron i natychmiast zobacz, co oznacza w prostym języku. Nasz parser rozbija każde pole (minuta, godzina, dzień, miesiąc, dzień tygodnia) i wyjaśnia harmonogram.

Obsługuje:

  • znaki wieloznaczne (*)
  • zakresy (1-5)
  • listy (1,3,5)
  • kroki (*/5)
  • nazwane wartości (MON-FRI, JAN-DEC)

Kalkulator harmonogramu Cron - Następne terminy uruchomienia

Zobacz dokładnie, kiedy Twoje zadanie cron zostanie ponownie wykonane. Nasz kalkulator pokazuje najbliższe 10 terminów uruchomienia z dokładnymi datami i znacznikami czasu, dzięki czemu możesz weryfikować harmonogram przed wdrożeniem na produkcję.

Nigdy więcej nie wdrażaj błędnego harmonogramu cron.

Jak działa wyrażenie Cron?

Wyrażenie cron działa poprzez porównywanie bieżącego czasu z wzorcem złożonym z pięciu pól rozdzielonych spacjami:

  • minuta
  • godzina
  • dzień miesiąca
  • miesiąc
  • dzień tygodnia

Demon crona (crond) wybudza się co minutę i uruchamia każde zadanie, którego pola pasują do aktualnego zegara, zgodnie ze specyfikacją POSIX crontab i stroną podręcznika crontab(5) w Linuksie. Każde pole akceptuje symbol wieloznaczny (*) oznaczający „dowolną wartość”, a także zakresy, listy i operatory kroku.

Vixie cron, powszechnie stosowana implementacja w większości dystrybucji Linuksa, działa według tych zasad. Zrozumienie, że cron analizuje czas minuta po minucie, wyjaśnia, dlaczego nie potrafi on natywnie planować zadań z częstotliwością podminutową bez pola sekund.

Co oznaczają pięć pól w wyrażeniu Cron?

Czytając od lewej do prawej, pięć pól crona oznacza odpowiednio:

  • minuta (0-59)
  • godzina (0-23)
  • dzień miesiąca (1-31)
  • miesiąc (1-12)
  • dzień tygodnia (0-6, gdzie 0 oznacza niedzielę)

Kolejność ta jest określona w standardzie POSIX (IEEE Std 1003.1) i opisana na stronie podręcznika crontab(5) w man7.org. W większości implementacji pola miesiąca i dnia tygodnia akceptują również trzyliterowe skróty, takie jak JAN-DEC oraz SUN-SAT.

Kluczowa zasada POSIX: gdy zarówno dzień miesiąca, jak i dzień tygodnia są ograniczone (żadne z nich nie jest *), cron uruchamia zadanie, jeśli spełniony jest którykolwiek z tych warunków (logiczne LUB), a nie oba naraz. To zachowanie często zaskakuje programistów i powoduje nieoczekiwane, dodatkowe uruchomienia.

Jak używać operatorów kroku, zakresu i listy w Cronie

Operatory kroku, zakresu i listy w cronie pozwalają na zwięzłe zapisanie złożonych harmonogramów.

  • Zakres, taki jak 1-5, oznacza kolejne wartości (od poniedziałku do piątku w polu dnia tygodnia).
  • Lista, taka jak 1,3,5, pasuje tylko do tych konkretnych wartości.
  • Krok, taki jak */15 w polu minuty, oznacza „co 15 minut” (0, 15, 30, 45), a kroki można łączyć z zakresami, np. 0-30/10.

Operatory te są opisane w podręczniku crontab(5) i kodzie źródłowym Vixie cron. Na przykład wyrażenie */5 9-17 * * 1-5 uruchamia zadanie co pięć minut między godziną 9:00 a 17:00 w dni robocze.

Łączenie operatorów pozwala zachować czytelność wierszy crontab przy jednoczesnym obsłużeniu skomplikowanych okien czasowych.

Czym są specjalne ciągi znaków w Cronie, takie jak @daily czy @reboot?

Specjalne ciągi znaków w cronie to nazwane skróty, które zastępują pięciopolową składnię dla popularnych harmonogramów.

  • @yearly (lub @annually) odpowiada 0 0 1 1 *
  • @monthly odpowiada 0 0 1 * *
  • @weekly odpowiada 0 0 * * 0
  • @daily (lub @midnight) odpowiada 0 0 * * *
  • @hourly odpowiada 0 * * * *

Te aliasy wywodzą się z Vixie cron i są udokumentowane na stronie podręcznika crontab(5) na man7.org. Wyjątkiem jest @reboot, który uruchamia zadanie jednorazowo podczas startu systemu, a nie według harmonogramu zegarowego.

Pamiętaj, że nie każda implementacja crona obsługuje te ciągi znaków – standard POSIX cron ich nie wymaga, dlatego warto sprawdzić wsparcie przed użyciem ich w przenośnych skryptach.

Czy Cron obsługuje sekundy i harmonogramy podminutowe?

Standardowy Unix cron nie obsługuje sekund; jego najmniejsza rozdzielczość wynosi jedną minutę, ponieważ crond analizuje harmonogram raz na minutę, zgodnie ze specyfikacją crontab(5).

Aby planować zadania z dokładnością co do sekundy, programiści używają rozszerzonych składni cron, które dodają szóste pole na początku. Zarówno Quartz Scheduler, jak i składnia @Scheduled w Spring umieszczają sekundy na pierwszym miejscu w układzie: sekunda minuta godzina dzień-miesiąca miesiąc dzień-tygodnia. Z kolei AWS EventBridge (dawniej CloudWatch Events) używa sześciopolowego crona z polem roku na końcu.

Ponieważ formaty te się różnią, sześciopolowe wyrażenie napisane dla Quartz nie uruchomi się poprawnie w zwykłym crontabie. Zawsze upewnij się, jaki silnik analizuje Twoje wyrażenie, ponieważ liczba pól i ich znaczenie różnią się w zależności od systemu.

Jak strefy czasowe wpływają na zadania Cron?

Strefy czasowe wpływają na zadania cron, ponieważ większość demonów cron weryfikuje harmonogramy według czasu lokalnego systemu, a nie UTC. Gdy serwer przechodzi zmianę czasu na letni lub zimowy (DST), zadania zaplanowane na pominiętą lub powtórzoną godzinę mogą zostać pominięte lub wykonane dwukrotnie; podręcznik crontab(5) oraz dokumentacja bazy danych stref czasowych IANA opisują te szczególne przypadki.

Aby uniknąć dwuznaczności, wiele zespołów ustawia strefę czasową serwera lub zmienną CRON_TZ w pliku crontab na UTC, postępując zgodnie z wytycznymi ISO 8601 dotyczącymi jednoznacznego pomiaru czasu. Harmonogramy chmurowe, takie jak Google Cloud Scheduler i AWS EventBridge, pozwalają jawnie określić strefę czasową.

Gdy precyzja czasowa ma kluczowe znaczenie, zawsze dokumentuj, czy wyrażenie używa czasu UTC, czy lokalnego.

Jak bezpiecznie testować i weryfikować wyrażenia Cron

Aby bezpiecznie przetestować wyrażenie cron, zweryfikuj jego składnię i przejrzyj nadchodzące terminy uruchomienia przed dodaniem go do działającego pliku crontab. Ten parser sprawdza zakresy pól i operatory, a następnie wyświetla kolejne czasy wykonania, umożliwiając potwierdzenie, że częstotliwość odpowiada Twoim zamierzeniom.

Na serwerze uruchom crontab -l, aby przejrzeć istniejące zadania, oraz crontab -e, aby je edytować, jak opisano w stronach podręcznika crontab(1) i crontab(5). Przekieruj dane wyjściowe zadania do pliku logów (na przykład dopisując >> /var/log/myjob.log 2>&1), aby błędy były widoczne.

Wcześniejsze przetestowanie zapobiega kosztownym błędom przesunięcia o jeden (np. pomyleniu minuty z godziną), które ujawniają się dopiero po uruchomieniu harmonogramu na produkcji.

Częste błędy podczas pisania wyrażeń Cron

Najczęstszym błędem w cronie jest błędne odczytanie kolejności pól i pomylenie minuty z godziną, przez co 0 9 * * * (9:00) staje się 9 0 * * * (00:09).

  • Innym częstym błędem jest oczekiwanie, że dzień miesiąca i dzień tygodnia zostaną połączone iloczynem logicznym (AND), podczas gdy cron zgodny z POSIX stosuje sumę logiczną (OR), gdy oba pola są ustawione, zgodnie ze specyfikacją crontab(5).
  • Programiści często zakładają też, że dzień 7 oznacza niedzielę; standardowy cron używa zakresu 0-6, choć Vixie cron akceptuje 7 jako niedzielę dla wygody.
  • Użycie */5 w polu godziny oznaczające "co 5 godzin" działa, ale zapomnienie o początkowym 0 w polu minuty sprawia, że zadanie uruchamia się co minutę w tych godzinach.
  • Wreszcie, nieeskapowane znaki procenta (%) w poleceniach są traktowane przez crona jako znaki nowej linii.

Gdzie używa się wyrażeń Cron w DevOps i CI/CD?

Wyrażenia cron są stosowane w całym obszarze DevOps i CI/CD do wyzwalania cyklicznej automatyzacji bez ręcznej interwencji. GitHub Actions harmonogramuje przepływy pracy za pomocą standardowego, pięciopolowego wyrażenia cron w kluczu on.schedule.cron, a harmonogramy potoków GitLab CI używają tej samej składni.

Zadania CronJob w Kubernetes, zdefiniowane w API batch/v1, uruchamiają skonteneryzowane zadania według harmonogramu cron, jak udokumentowano w oficjalnej dokumentacji Kubernetes. Platformy chmurowe, w tym AWS EventBridge, Google Cloud Scheduler i Azure Logic Apps, oferują harmonogramowanie w stylu cron dla zadań bezserwerowych.

Do typowych zastosowań należą:

  • nocne kopie zapasowe baz danych
  • podgrzewanie pamięci podręcznej (cache warming)
  • generowanie raportów
  • odnawianie certyfikatów
  • rotacja logów

Ponieważ każda platforma może używać nieco innego wariantu składni, zawsze weryfikuj swoje wyrażenie za pomocą parsera docelowego systemu.

Frequently Asked Questions

sell

Tags