Analizator Wyrazen Cron preview

Analizator Wyrazen Cron

Parse cron expressions into human-readable text. See next execution times and use preset examples.

Najwazniejsze funkcje

  • Czytelne dla człowieka wyjaśnienia cron
  • Podgląd kolejnych 5 czasów wykonania
  • Popularne gotowe wyrażenia
  • Wizualny podział pól

Guide

Cron to oparty na czasie system planowania zadań używany w systemach typu Unix do uruchamiania poleceń lub skryptów w określonych odstępach. Wyrażenie cron to zwarty ciąg definiujący harmonogram za pomocą pięciu pól: minuty, godziny, dnia miesiąca, miesiąca i dnia tygodnia. Mimo że jest to jeden z najczęściej używanych formatów planowania w informatyce, wyrażenia cron są notorycznie trudne do odczytania w jednym rzucie oka. Ten przewodnik szczegółowo omawia składnię, sposób czytania i pisania wyrażeń, popularne wzorce i praktyczne przypadki użycia. Pięć pól standardowego wyrażenia cron ułożone jest od lewej do prawej: minuta (0-59), godzina (0-23), dzień miesiąca (1-31), miesiąc (1-12) i dzień tygodnia (0-7, gdzie zarówno 0, jak i 7 oznaczają niedzielę). Każde pole przyjmuje określone wartości, zakresy, listy i znaki specjalne. Pełne wyrażenie jak 30 14 * * 1-5 oznacza o 14:30 w każdy dzień od poniedziałku do piątku. Parser cron WebRecast tłumaczy te wyrażenia na zwykły język i pokazuje kolejne zaplanowane czasy wykonania. Gwiazdka (*) to znak wieloznaczny oznaczający każdą możliwą wartość. W polu minuty * oznacza co minutę. W polu miesiąca * oznacza co miesiąc. Gdy wszystkie pięć pól to gwiazdki (* * * * *), zadanie wykonuje się co minutę każdej godziny każdego dnia. To najprostsze wyrażenie cron i jednocześnie jedno z najniebezpieczniejszych w produkcji, jeśli nie zamierzasz uruchamiać czegoś tak często. Ukośnik (/) określa wartości krokowe. */5 w polu minuty oznacza co 5 minut (0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55). */2 w polu godziny oznacza co 2 godziny (0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22). Możesz łączyć kroki z zakresami: 1-30/5 w polu minuty oznacza co 5 minut w ciągu pierwszej pół godziny (1, 6, 11, 16, 21, 26). Kroki ułatwiają tworzenie regularnych odstępów bez wyliczania każdej wartości. Przecinek (,) tworzy listę konkretnych wartości. 1,15 w polu dnia miesiąca oznacza 1. i 15. dzień miesiąca. 0,30 w polu minuty oznacza na pełnej godzinie i po 30 minutach. MON,WED,FRI w polu dnia tygodnia (jeśli Twoja implementacja cron obsługuje nazwy) oznacza poniedziałek, środę i piątek. Listy są przydatne, gdy Twój harmonogram nie podąża za regularnym interwałem. Myślnik (-) definiuje zakres. 9-17 w polu godziny oznacza co godzinę od 9:00 do 17:00. 1-5 w polu dnia tygodnia oznacza od poniedziałku do piątku. Zakresy są włączne, co oznacza, że uwzględniają oba punkty końcowe. Możesz łączyć zakresy z krokami: 0-23/2 oznacza co drugą godzinę przez cały dzień, a 1-5 w polu dnia tygodnia z */10 w polu minuty oznacza co 10 minut w dni robocze. Niektóre implementacje cron obsługują dodatkowe znaki. Znak zapytania (?) jest używany w niektórych systemach (np. harmonizator Quartz) do wskazania braku konkretnej wartości dla dnia miesiąca lub dnia tygodnia, gdy chcesz określić jedno, ale nie drugie. Znak L oznacza ostatni (L w polu dnia miesiąca oznacza ostatni dzień miesiąca). Znak W oznacza najbliższy dzień roboczy (15W oznacza najbliższy dzień roboczy do 15.). Znak hash (#) określa n-te wystąpienie dnia tygodnia (2#3 oznacza trzeci wtorek miesiąca). Standardowy Unix cron ich nie obsługuje, ale pojawiają się w harmonizatorach opartych na Javie i usługach cron platform chmurowych. Popularne wzorce cron obejmują większość potrzeb planowania. Uruchamianie co minutę: * * * * *. Co 5 minut: */5 * * * *. Co godzinę przy minucie 0: 0 * * * *. Codziennie o północy: 0 0 * * *. Codziennie o 3:30: 30 3 * * *. Co tydzień w niedzielę o północy: 0 0 * * 0. Co miesiąc 1. dnia o północy: 0 0 1 * *. W dni robocze o 9:00: 0 9 * * 1-5. Co 15 minut w godzinach pracy w dni robocze: */15 9-17 * * 1-5. Narzędzie parsera cron zawiera te popularne gotowce do szybkiej referencji. Obsługa stref czasowych to kluczowe rozważenie, którego samo wyrażenie cron nie adresuje. Wyrażenie cron określa czas, ale w której strefie czasowej? Na lokalnym serwerze cron zazwyczaj działa w systemowej strefie czasowej serwera. Platformy chmurowe (AWS CloudWatch, Google Cloud Scheduler, Azure Logic Apps) pozwalają jawnie określić strefę czasową. Planując zadania obsługujące globalną publiczność lub działające na infrastrukturze chmurowej, zawsze weryfikuj i dokumentuj, jakiej strefy czasowej dotyczą Twoje wyrażenia cron. Zadanie zaplanowane na 0 9 * * * oznacza 9:00 w strefie czasowej serwera, która może być UTC, Twoim czasem lokalnym lub czymś zupełnie innym. Czas letni tworzy przypadki brzegowe dla harmonogramów cron. Gdy zegary przestawia się do przodu, godzina od 2:00 do 3:00 nie istnieje. Zadanie zaplanowane na 2:30 podczas przejścia wiosennego może zostać pominięte lub wykonane o 3:00 w zależności od implementacji cron. Gdy zegary cofają się, godzina od 1:00 do 2:00 występuje dwukrotnie. Zadanie zaplanowane w tym okresie może zostać uruchomione dwukrotnie lub raz w zależności od implementacji. Używanie UTC dla harmonogramów cron całkowicie unika problemów DST, dlatego wiele systemów produkcyjnych standaryzuje się na UTC. Nakładające się wykonania mają miejsce, gdy zadanie trwa dłużej niż odstęp między zaplanowanymi uruchomieniami. Jeśli zadanie jest zaplanowane co 5 minut, ale czasem trwa 8 minut, kolejne wykonanie startuje, zanim poprzednie się zakończy. Może to powodować rywalizację o zasoby, uszkodzenie danych lub podwójne przetwarzanie. Sam system cron nie zapobiega nakładającym się wykonaniom. Rozwiązania obejmują używanie plików blokady (zadanie sprawdza plik blokady na starcie i kończy, jeśli istnieje), używanie flock (narzędzia blokowania plików) lub używanie planisty zadań z wbudowaną kontrolą współbieżności. Logowanie i monitorowanie zadań cron jest niezbędne dla niezawodności produkcyjnej. Zadanie cron, które zawodzi po cichu, jest gorsze niż takie, które nigdy nie wystartowało. Kieruj wyjście zadania do plików logów, dodając >> /var/log/myjob.log 2>&1 do polecenia cron. To przechwytuje zarówno standardowe wyjście, jak i błędy. Skonfiguruj monitorowanie, by powiadamiać Cię, gdy zadanie zawiedzie lub nie uruchomi się zgodnie z harmonogramem. Usługi jak Healthchecks.io i Cronitor zapewniają monitorowanie typu dead man's switch, gdzie Twoje zadanie cron wysyła ping do URL po zakończeniu, a Ty dostajesz alert, jeśli ping nie nadejdzie na czas. Różnice środowisk między interaktywną powłoką a środowiskiem cron powodują wiele awarii zadań. Gdy cron uruchamia zadanie, używa minimalnego środowiska, które może nie mieć wpisów PATH, zmiennych środowiskowych i konfiguracji powłoki z sesji interaktywnej. Jeśli zadanie działa, gdy uruchamiasz je ręcznie, ale zawodzi w cron, prawdopodobną przyczyną jest brakująca zmienna środowiskowa lub plik wykonywalny niedostępny, bo nie ma go w cron PATH. Rozwiązania obejmują używanie ścieżek bezwzględnych dla wszystkich plików wykonywalnych (/usr/bin/python3 zamiast python3), ustawianie zmiennych środowiskowych jawnie na górze crontab lub źródłowanie profilu powłoki na początku skryptu zadania. Polecenie crontab zarządza Twoim harmonogramem cron. crontab -e otwiera plik crontab w edytorze. crontab -l wyświetla Twoje bieżące wpisy crontab. crontab -r usuwa cały Twój crontab (używaj ostrożnie). Każdy wiersz w pliku crontab to albo komentarz (zaczynający się od #), przypisanie zmiennej środowiskowej (MAILTO=admin@example.com), albo wpis harmonogramu (pięć pól czasowych, po których następuje polecenie do uruchomienia). Zmienna MAILTO wysyła wyjście zadania na adres e-mail, co jest przydatnym mechanizmem monitorowania dla małych konfiguracji. Cron ogólnosystemowy jest zarządzany przez pliki w /etc/cron.d/, /etc/cron.daily/, /etc/cron.hourly/, /etc/cron.weekly/ i /etc/cron.monthly/. Te katalogi używają nieco innego formatu, który obejmuje pole nazwy użytkownika między harmonogramem a poleceniem, określające, które konto użytkownika uruchamia zadanie. Pakiety systemowe i skrypty administracji serwerem zazwyczaj używają tych lokalizacji zamiast indywidualnych crontab użytkowników. Nowoczesne alternatywy dla cron obejmują timery systemd w systemach Linux, które oferują funkcje jak losowe opóźnienia, zarządzanie zależnościami i lepszą integrację logowania. Platformy chmurowe oferują własne usługi planowania: AWS EventBridge (dawniej CloudWatch Events), Google Cloud Scheduler, Azure Logic Apps i Kubernetes CronJobs. Te usługi używają składni wyrażeń cron, ale dodają funkcje jak polityki ponawiania, kolejki dead letter i panele monitorowania. Zrozumienie składni wyrażeń cron pozostaje istotne, bo wszystkie te nowoczesne narzędzia używają tego samego formatu pięciu pól. Kubernetes CronJobs zasługują na szczególną wzmiankę, bo łączą planowanie cron z orkiestracją kontenerów. Kubernetes CronJob tworzy nowy pod według harmonogramu, uruchamia zadanie w kontenerze i czyści po zakończeniu. Pole schedule używa standardowej składni cron. Dodatkowa konfiguracja steruje polityką współbieżności (Allow, Forbid lub Replace), limitami historii udanych i nieudanych zadań, sekundami terminu startu i funkcjonalnością zawieszenia. Jeśli uruchamiasz obciążenia na Kubernetes, CronJobs to standardowy sposób planowania powtarzających się zadań. Parser cron WebRecast przyjmuje Twoje wyrażenie i generuje trzy rzeczy: czytelne dla człowieka wyjaśnienie harmonogramu (w prostym języku jak co 15 minut w dni robocze), podział każdego pola pokazujący, jakie wartości dopasowuje, oraz kolejne 5 zaplanowanych czasów wykonania na podstawie bieżącej daty i czasu. To ułatwia zweryfikowanie, że Twoje wyrażenie robi to, co zamierzasz, przed wdrożeniem do produkcji. Wprowadź wyrażenie, przeczytaj wyjaśnienie, sprawdź kolejne czasy wykonania i potwierdź, że harmonogram spełnia Twoje wymagania. Testowanie wyrażeń cron przed wdrożeniem zapobiega błędom planowania, które mogą mieć realne konsekwencje. Zadanie kopii zapasowej uruchamiane co godzinę zamiast codziennie marnuje miejsce na dysku. Zadanie rozliczeniowe uruchamiane codziennie zamiast co miesiąc zawyża opłaty klientów. Zadanie czyszczące uruchamiane co minutę zamiast co godzinę tworzy niepotrzebne obciążenie serwera. Zawsze parsuj i weryfikuj swoje wyrażenie cron za pomocą narzędzia takiego jak to, zanim dodasz je do crontab lub konfiguracji planisty chmurowego. Te kilka sekund weryfikacji może zapobiec godzinom debugowania lub czemuś gorszemu.

Czeste pytania

Czym jest wyrażenie cron?

Wyrażenie cron to ciąg 5 pól (minuta, godzina, dzień, miesiąc, dzień tygodnia) definiujący harmonogram powtarzających się zadań.

Co oznacza */5 w cron?

Składnia */5 oznacza "co 5. interwał". Na przykład */5 w polu minut oznacza co 5 minut.

Powiazane poradniki

Powiazane sekcje WebRecast