Generator Cron - Wyrażenie Crontab i Najbliższe Terminy

    Jak często ma ruszać skrypt? Generator cron składa wyrażenie z listy albo rozbiera gotowe, tłumaczy je na polski i wypisuje najbliższe terminy w czasie polskim lub UTC.

    Parametry

    Wprowadź dane do obliczeń

    Budowanie albo sprawdzanie

    Domyślnie czas polski

    Domyślnie 5

    Postęp wypełniania0 / 1 pól

    💡 Wypełnij wszystkie wymagane pola, aby odblokować przycisk obliczania

    Wyrażenie cron od środka - atlas pięciu pól

    Pięć pól oddzielonych spacjami decyduje, kiedy serwer uruchomi skrypt. 30 7 * * 1-5 to „od poniedziałku do piątku o 07:30”, a */15 * * * * to „co 15 minut”. Generator składa takie wyrażenie z listy (co ile minut, o której godzinie, w jakie dni) albo rozbiera gotowe, tłumaczy je na polski i wypisuje najbliższe terminy uruchomienia w czasie polskim, razem z nocami zmiany czasu.

    5 pól
    minuta, godzina, dzień, miesiąc, dzień tygodnia
    0 = 7
    oba numery oznaczają niedzielę
    1 minuta
    najmniejszy odstęp, bez sekund

    Jak ustawić zadanie w cronie - krok po kroku

    1. Tryb - „zbuduj” daje gotowe wyrażenie z prostych pytań, „sprawdź” przyjmuje wyrażenie albo całą linię z crontaba.
    2. Harmonogram - co minutę, co N minut, co N godzin, codziennie, w dni robocze, w wybrane dni tygodnia, raz w miesiącu albo raz w roku.
    3. Strefa serwera - czas polski albo UTC. Strefę serwera pokażą polecenia timedatectl albo date.
    4. Licz od - puste pole oznacza „od teraz”. Datę wpisuje się w czasie polskim.
    5. Skopiuj linię - kliknięcie w kod zaznacza całość. Wklejasz ją po poleceniu crontab -e, a ścieżkę zamieniasz na swoje polecenie.

    Podstawy, które warto znać przed edycją crontaba

    Demon cron sprawdza tabelę co minutę i uruchamia każde polecenie, którego pola zgadzają się z bieżącą chwilą. Stąd najmniejszy możliwy odstęp to 1 minuta, a wyrażenie z sześcioma polami (sekundy na początku) pochodzi z innego świata: tak zapisują harmonogramy Quartz i Spring w Javie. Generator rozpoznaje taki zapis i podpowiada, co usunąć.

    Każde pole przyjmuje gwiazdkę (każda wartość), pojedynczą liczbę, zakres z łącznikiem (8-11 to godziny 8, 9, 10 i 11), listę po przecinku i krok po ukośniku (0-23/2 albo */2). W polach miesiąca i dnia tygodnia działają angielskie skróty z trzech liter: jan-dec i sun-sat, bez względu na wielkość liter. Tak opisuje to strona podręcznika man 5 crontab programu cronie.

    Krok liczy się wyłącznie wewnątrz jednego pola. */35 w minutach nie znaczy „co 35 minut”, tylko „w minucie 0 i 35 każdej godziny”, więc między 12:35 a 13:00 mija 25 minut. Ten sam podręcznik podaje to jako przykład pułapki, a generator dopisuje ostrzeżenie zawsze, gdy krok nie dzieli 60 minut albo 24 godzin.

    Tabela 1: pola i znaki specjalne crona

    Zakresy wartości i zapisy, które przyjmuje cronie (pliki entry.c i cron.c z kodu źródłowego programu). Kolumna „Uwaga” zbiera błędy, które najczęściej kończą się odrzuceniem całej linii.

    Pole lub zapis Wartości Przykład Uwaga
    Minuta0-590,30brak sekund
    Godzina0-238-1724 to błąd, północ to 0
    Dzień miesiąca1-311,15nie ma „ostatniego dnia”
    Miesiąc1-12 albo jan-decjan-marpolskie nazwy nie działają
    Dzień tygodnia0-7 albo sun-sat1-50 i 7 to niedziela, sat-sun działa
    *pełny zakres pola* * * * *wpływa na regułę dni (niżej)
    a-bzakres z oboma końcami9-1722-5 odrzucony, pisz 22-23,0-5
    /nkrok po * lub zakresie*/105/10 odrzucony, /0 też
    ,lista wartości i zakresów0-4,8-12bez spacji po przecinku
    ? L W #składnia Quartz0 0 L * ?linuksowy cron ich nie zna

    Tabela 2: gotowe wyrażenia i skróty z @

    Skróty z małpą zastępują całe pięć pól. Ich rozwinięcia pochodzą z podręcznika i kodu cronie; @midnight działa tak samo jak @daily. Ostatnia kolumna mówi, czy wyrażenie zachowuje się przewidywalnie.

    Wyrażenie Znaczenie Ocena
    @hourly = 0 * * * *co godzinę, o pełnejPrzewidywalne
    @daily = 0 0 * * *codziennie o północyPrzewidywalne
    @weekly = 0 0 * * 0w niedzielę o północyPrzewidywalne
    @monthly = 0 0 1 * *1. dnia miesiąca o północyPrzewidywalne
    @yearly = 0 0 1 1 *1 stycznia o północyPrzewidywalne
    @rebootraz po starcie demona cronBez stałych terminów
    */7 * * * *minuty 0, 7 ... 56, potem 0Nierówny odstęp (4 min)
    0 0 31 * *tylko miesiące z 31 dniami5 miesięcy bez uruchomienia
    30 2 * * *codziennie o 02:30Przesunięte w noc zmiany czasu

    Ciekawe zależności, które psują harmonogram

    Dzień miesiąca LUB dzień tygodnia. Gdy oba pola dni są ograniczone, cron nie szuka ich części wspólnej. 30 4 1,15 * 5 uruchomi się 1. i 15. dnia każdego miesiąca oraz w każdy piątek. W miesiącu, który zaczyna się w niedzielę, generator pokazuje dla tego wyrażenia kolejno dni: 1, 6, 13, 15 i 20.
    Gwiazdka zmienia LUB na I. W kodzie cronie (cron.c) reguła zależy od tego, czy pole dni zaczyna się od *. W 0 0 */2 * 1 pole dnia miesiąca zaczyna się od gwiazdki, więc oba warunki muszą być spełnione razem: północ w poniedziałek, który wypada w nieparzysty dzień miesiąca.
    Zmiana czasu wiosną. W ostatnią niedzielę marca po 01:59 zegar pokazuje od razu 03:00. Cronie wykrywa skok i zadanie o stałej godzinie, np. 30 2 * * *, uruchamia zaraz po nim, o 03:00. Zadanie z gwiazdką w minutach lub godzinach (*/30 2 * * *) tego dnia nie wystartuje wcale.
    Zmiana czasu jesienią. W ostatnią niedzielę października godzina 02:00-02:59 występuje dwa razy. Zadanie o stałej godzinie wykona się raz, a zadanie z gwiazdką w minutach lub godzinach dwa razy, bo cronie po cofnięciu zegara uruchamia wtedy tylko takie zadania. Generator oznacza oba przypadki w kolumnie „Uwagi”.

    Jak czytać listę najbliższych uruchomień?

    Przykład z generatora: tryb „zbuduj”, dni robocze, godzina 07:30, liczenie od piątku 14:00. Wynik to 30 7 * * 1-5, a lista zaczyna się od poniedziałku 07:30; w sobotę i niedzielę nic się nie dzieje, więc odstęp między piątkiem a poniedziałkiem wynosi 72 godziny. Pod listą pojawia się uwaga, że cron nie zna świąt.

    Co widzisz w wyniku Co to znaczy
    Równe odstępy, brak uwagwyrażenie robi to, co mówi opis
    „nadrobione po przestawieniu zegara”wiosenna zmiana czasu, start o 03:00 zamiast 02:xx
    „drugi raz, po cofnięciu zegara”jesienna zmiana czasu, skrypt wykona się dwukrotnie
    „Brak uruchomień”data nie istnieje, np. 0 0 30 2 * (30 lutego)
    Krótszy odstęp na przełomie godzinykrok nie dzieli 60 lub 24, np. */7

    Terminy liczone są według reguł cronie z dystrybucji Linuksa. Systemd timers, Kubernetes CronJob, Quartz i harmonogramy w usługach chmurowych mają własną składnię albo strefę, więc przed wdrożeniem sprawdź ich dokumentację.

    Pytania o cron, które padają najczęściej

    Jak ustawić cron co 5 minut?
    */5 * * * *. Uruchomienia wypadają w minutach 0, 5, 10 ... 55 każdej godziny, czyli zawsze na „okrągłych” minutach, a nie 5 minut po zapisaniu crontaba.
    Czemu zadanie startuje o godzinę lub dwie za wcześnie?
    Sprawdź strefę serwera poleceniem timedatectl. Jeśli to UTC: zimą czas polski to UTC + 1 h, latem UTC + 2 h, więc 0 9 * * * na takim serwerze to 10:00 albo 11:00 w Polsce. Ustaw w generatorze strefę UTC, a obok każdego terminu zobaczysz czas polski.
    Jak uruchomić skrypt ostatniego dnia miesiąca?
    Linuksowy cron nie ma znaku L. Popularne obejście to codzienne uruchomienie dni 28-31 z warunkiem w poleceniu, który sprawdza, czy jutro jest pierwszy dzień miesiąca. Sam warunek zależy od powłoki i wersji polecenia date, więc przetestuj go ręcznie.
    Czy mogę wkleić całą linię z crontaba razem z poleceniem?
    Tak. Generator bierze pierwsze pięć pól jako harmonogram, a resztę zostawia jako polecenie w gotowej linii. Jeśli po pięciu polach stoi jeszcze gwiazdka, dostaniesz ostrzeżenie: to najczęstsza literówka (sześć gwiazdek zamiast pięciu), przez którą cronie odrzuca linię.
    Dlaczego „pon” albo „poniedziałek” nie działa?
    Cron porównuje tylko angielskie skróty z trzech liter: mon, tue, wed, thu, fri, sat, sun i jan-dec. Liczby działają zawsze, a w trybie „zbuduj” generator wpisuje je sam.

    Powiązane narzędzia

    Regex Tester

    Wyrażenia regularne JavaScript z podświetleniem dopasowań, grupami, podmianą i ochroną przed ReDoS - Zobacz generator

    JWT Decoder

    Nagłówek i payload tokenu JWT, daty wygaśnięcia w czasie polskim i weryfikacja podpisu HS256 sekretem - Zobacz generator

    Formatowanie JSON

    Sprawdzenie pliku konfiguracyjnego JSON z numerem linii błędu - Zobacz generator

    Generator Danych Testowych

    Rekordy do bazy testowej, którą skrypt z crona może zasilać - Zobacz generator

    Kodowanie Base64

    Tekst na Base64 i z powrotem, np. do nagłówka autoryzacji w skrypcie - Zobacz generator

    Generator SHA-256

    Suma kontrolna kopii zapasowej robionej co noc - Zobacz generator

    Konwerter JSON na XML

    Zamiana formatu danych między systemami - Zobacz generator

    Generator zweryfikowany przez zespół LiczGrupa.pl

    Treść, wzory i wyniki zostały sprawdzone pod kątem poprawności i aktualności przez nasz zespół specjalistów.

    Krystian Szyszka

    Sprawdził: Krystian Szyszka