Generator CRON
Ustaw harmonogram szablonem albo własnymi polami i dostań wyrażenie CRON, opis po polsku oraz gotowy wpis do crontaba.
-
1Wprowadź dane
Wpisz treść, wklej tekst lub załaduj plik z dysku. -
2Kliknij przycisk
Narzędzie natychmiast przetworzy Twoje dane w przeglądarce. -
3Pobierz wynik
Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
return "Wynik gotowy w 0.1s";
}
Wyrażenie CRON
Codziennie o 02:00
Uruchomień na dobę
w dniu, w którym zadanie jest aktywne
Najkrótszy odstęp
jedno uruchomienie na dobę
Obciążenie
wysokie, gdy odstęp jest krótszy niż 5 minut
| Pole | Wpisano | Znaczenie |
|---|---|---|
| Minuta | 0 | 0 |
| Godzina | 2 | 2 |
| Dzień miesiąca | * | każda wartość (1–31) |
| Miesiąc | * | każda wartość (1–12) |
| Dzień tygodnia | * | każda wartość (0–6) |
Ściąga: pola i znaki specjalne
| Nr | Pole | Dozwolone wartości |
|---|---|---|
| 1 | Minuta | 0–59 |
| 2 | Godzina | 0–23 |
| 3 | Dzień miesiąca | 1–31 |
| 4 | Miesiąc | 1–12 |
| 5 | Dzień tygodnia | 0–6 (0 = niedziela, 1 = poniedziałek) |
| Znak | Znaczenie | Przykład |
|---|---|---|
| * | każda możliwa wartość | * w polu godziny: każdej godziny |
| , | lista wartości | 0,30 w polu minuty: o pełnej godzinie i w połowie |
| - | zakres (włącznie z końcami) | 1-5 w polu dnia tygodnia: od poniedziałku do piątku |
| / | krok | */15 w polu minuty: co 15 minut |
Dzień miesiąca i dzień tygodnia naraz
Gdy ustawisz oba pola, np. 0 8 1 * 1, klasyczny cron uruchomi zadanie, gdy pasuje którykolwiek z nich: 1. dnia miesiąca albo w poniedziałek. Jeśli chcesz warunku „oba naraz”, zostaw jedno pole jako * i sprawdź datę w skrypcie.
Strefa czasowa i zmiana czasu
Godziny liczą się według strefy czasowej serwera, nie Twojej; sprawdzisz ją poleceniem date. W nocy przy zmianie czasu (okolice 2:00–3:00) zadanie może się nie wykonać albo wykonać dwa razy. Dla ważnych zadań wybierz godzinę spoza tego okna.
Gdzie wkleić wpis
Własny harmonogram edytujesz poleceniem crontab -e: jedna linia to 5 pól czasu i polecenie. Pliki /etc/crontab i /etc/cron.d/ wymagają jeszcze nazwy użytkownika przed poleceniem. Podaj ją w polu „Użytkownik”. W panelach hostingowych pola czasu i polecenie zwykle wpisuje się osobno.
Znak % i ścieżki w poleceniu
W crontabie niezabezpieczony znak % oznacza nowy wiersz, więc zapisz go jako \%. Cron działa z uboższym środowiskiem niż Twoja powłoka (krótki PATH), dlatego podawaj pełne ścieżki, np. /usr/bin/php, a nie samo php.
Oceń to narzędzie:
Powiązane narzędzia
Inne narzędzia, które mogą Ci się przydaćGenerator CRON – twórz poprawne harmonogramy zadań w kilka sekund
Generator CRON składa pięć pól harmonogramu w poprawne wyrażenie, dopina polecenie w gotową linię do crontaba i od razu pokazuje, ile razy na dobę zadanie się uruchomi. Przykład: 0 2 * * * to „Codziennie o 02:00”, czyli jedno uruchomienie na dobę. CRON jest prosty, dopóki nie pomylisz pól, zakresów albo nie trafisz na klasyczne „dlaczego to się nie uruchamia?”.
Jeśli chcesz ustawić backupy, raporty, odświeżanie cache, polecenia CLI w aplikacji (np. artisan schedule:run), ping do API albo zwykłe „uruchom to codziennie o 02:00”, jesteś w dobrym miejscu. Wybierasz szablon harmonogramu, podajesz godzinę i minutę (albo przechodzisz na „Własny”), dodajesz polecenie i od razu masz wynik do wklejenia. Wynik przelicza się na bieżąco, bez osobnego przycisku generowania.
Oprócz samego wyrażenia dostajesz opis po polsku (żeby nie zgadywać po samym 0 2 * * 1, że to „W poniedziałki, o 02:00”), tabelę z rozbiciem każdego pola, liczbę uruchomień na dobę, najkrótszy odstęp między nimi i ocenę obciążenia. Obciążenie zmienia się na „Wysokie”, gdy zadanie startuje częściej niż co 5 minut: „co minutę” bywa dobre do testów, ale w produkcji potrafi niepotrzebnie obciążać serwer.
Jak działa CRON w praktyce
CRON to mechanizm planowania zadań w systemach Linux/Unix. Wpisujesz harmonogram w pięciu polach (minuta, godzina, dzień miesiąca, miesiąc, dzień tygodnia), a system uruchamia polecenie zgodnie z tym planem. Problem polega na tym, że te pola mają swoje zasady, zakresy i miny – szczególnie wtedy, gdy chcesz coś uruchamiać „co X”, „tylko w dni robocze” albo w konkretnych godzinach.
Zamiast walczyć z pamięciówką, wybierasz szablon (Każda minuta, Co godzinę, Codziennie, Co tydzień, Co miesiąc), klikasz jeden z ośmiu gotowych harmonogramów (np. co 15 minut, dni robocze o 8:00, 1. dnia miesiąca o północy) albo ustawiasz własne wyrażenie. W efekcie masz gotowe wyrażenie CRON, pełną linię wpisu z poleceniem i opis, który mówi wprost, co się wydarzy.
Szablony: najszybsza droga
Gdy potrzebujesz standardu (np. „codziennie o 02:00” albo „raz w tygodniu w poniedziałek”), szablony są najszybsze. „Co godzinę” pyta tylko o minutę, „Codziennie” o godzinę i minutę, „Co tydzień” dodatkowo o dzień tygodnia, a „Co miesiąc” o dzień miesiąca. Resztę pól generator ustawia na *.
Nie musisz pamiętać, czy dzień tygodnia to 0–6, czy 1–7: w generatorze obowiązuje 0–6, gdzie 0 to niedziela, a 1 to poniedziałek.
Własny: pełna kontrola
Jeśli wiesz, czego chcesz (albo masz gotowy wzór i tylko go poprawiasz), szablon „Własny” pozwala wpisać każde z pięciu pól osobno. Możesz używać *, list (1,15), zakresów (9-17) i kroków (*/5, 0-30/10), a generator sprawdza zakres każdego pola. Krok bez gwiazdki lub zakresu, np. 5/10, zostanie odrzucony, bo nie każdy cron go rozumie.
Gotowe wyrażenie możesz też wkleić (razem z poleceniem albo jako skrót @hourly, @daily, @weekly, @monthly, @yearly), a generator rozbije je na pola i opisze. Przykłady nietypowych planów: „co 10 minut w godzinach pracy” to */10 8-16 * * 1-5, „w każdy piątek o 18:30” to 30 18 * * 5.
Krok po kroku: wygeneruj wpis do crontaba
Najprostszy scenariusz wygląda tak: wybierasz szablon, uzupełniasz wymagane pola i dodajesz polecenie (opcjonalnie). Wynik dostajesz w dwóch formach: krótkie wyrażenie (same pola CRON) oraz pełną linię do wklejenia do crontaba.
- Wybierz szablon albo „Własny”. Możesz też kliknąć gotowy harmonogram lub wkleić istniejące wyrażenie.
- Uzupełnij minutę i godzinę oraz dzień tygodnia lub miesiąca, jeśli szablon o to prosi. Błędne pole zostanie oznaczone z podpowiedzią dozwolonego zakresu.
- Wpisz polecenie (np. skrypt, polecenie CLI, zadanie w aplikacji). Dla
/etc/crontabi/etc/cron.d/podaj też użytkownika, a jeśli wyjście nie jest potrzebne, zaznacz „Wycisz”. - Skopiuj „Wpis do crontab” i wklej go w edytorze otwartym poleceniem
crontab -e.
Dla przykładu wczytanego przyciskiem „Wczytaj przykład” wpis wygląda tak: */15 9-17 * * 1-5 php /home/user/app/artisan schedule:run >/dev/null 2>&1. Jeśli pole polecenia zostawisz puste, dostajesz tylko „gołe” wyrażenie z przyciskiem „Kopiuj wyrażenie” – przydaje się do dokumentacji, panelu hostingu albo konfiguracji innego narzędzia.
Mini ściąga: co oznaczają pola CRON
Kolejność pól jest stała. Tabela ratuje przed klasyczną zamianą miesiąca z dniem tygodnia oraz przed wpisaniem 60 w minutach albo 24 w godzinach – generator odrzuci obie wartości.
| Pole | Zakres | Co oznacza | Przykłady |
|---|---|---|---|
| Minuta | 0–59 | W której minucie godziny uruchomić zadanie | 0, 15, */5 |
| Godzina | 0–23 | O której godzinie uruchomić zadanie | 2, 8, */2 |
| Dzień miesiąca | 1–31 lub * | Konkretny dzień w miesiącu | 1, 15, * |
| Miesiąc | 1–12 lub * | Konkretny miesiąc | 1 (styczeń), 12, * |
| Dzień tygodnia | 0–6 lub * | Konkretny dzień tygodnia (0 = niedziela) | 1 (pon), 5 (pt), 1-5 |
Generator przyjmuje w polach tylko liczby i znaki * , - /. Nazw w rodzaju MON czy JAN ani siódemki jako niedzieli nie wpiszesz – dla niedzieli użyj 0.
Przykłady wyrażeń cron, które naprawdę się przydają
CRON najlepiej zrozumieć na przykładach. Poniżej ustawienia, które regularnie pojawiają się w realnych projektach, z opisem i liczbą uruchomień, jakie pokaże generator.
| Wyrażenie | Opis w generatorze | Uruchomień na dobę | Najkrótszy odstęp |
|---|---|---|---|
* * * * * | Co minutę | 1440 | 1 min (obciążenie wysokie) |
*/5 * * * * | Co 5 minut | 288 | 5 min |
*/15 9-17 * * 1-5 | W dni robocze (pon–pt), co 15 minut, w godzinach: 9–17 | 36 | 15 min |
0 * * * * | Co godzinę, o pełnej godzinie | 24 | 1 godz. |
0 */2 * * * | Co 2 godziny, w minucie 0 | 12 | 2 godz. |
0 2 * * * | Codziennie o 02:00 | 1 | – |
30 18 * * 5 | W piątki, o 18:30 | 1 | – |
0 0 1 * * | 1. dnia miesiąca, o 00:00 | 1 | – |
Codziennie w nocy (backup, raport, sprzątanie)
Najczęstszy klasyk: raz dziennie, w godzinach najmniejszego ruchu. To dobry kompromis między aktualnością danych a obciążeniem. W generatorze ustawisz to szablonem „Codziennie”, podając godzinę i minutę.
Takie zadania warto logować do pliku, żeby w razie błędów nie szukać ich po omacku.
Co 5–15 minut (monitoring, synchronizacja, kolejki)
Jeśli coś ma działać prawie na bieżąco, wybiera się uruchomienia co kilka minut. Tu łatwo przesadzić, szczególnie gdy polecenie potrafi działać dłużej niż sam interwał. */5 to już 288 startów na dobę; przy kroku */2 lub * generator pokaże wysokie obciążenie.
Przed nakładaniem się procesów chroni blokada, np. flock -n /tmp/sync.lock polecenie: drugie uruchomienie zakończy się od razu, jeśli pierwsze jeszcze trwa.
Te pułapki łapią nawet doświadczonych
Najczęstsza: wpisujesz dzień miesiąca i dzień tygodnia jednocześnie, a zadanie uruchamia się częściej, niż oczekujesz. W klasycznym crondzie te pola działają w trybie „albo/albo”, a nie „i”: 0 8 1 * 1 generator opisze jako „1. dnia miesiąca lub w poniedziałki, o 08:00” i doda ostrzeżenie. Jeśli nie musisz, trzymaj jedno z tych pól jako *.
Druga: krok, który nie dzieli zakresu równo. */7 w minutach daje starty o :00, :07 … :56, a potem znowu o :00 następnej godziny, więc ostatni odstęp to 4 minuty, nie 7. Generator policzy wtedy 216 uruchomień na dobę, pokaże najkrótszy odstęp 4 min i ostrzeże o nierównych odstępach. Podobnie zakres godzin jest włącznie z końcem: */15 9-17 ostatni raz uruchomi zadanie o 17:45, a nie o 17:00.
Trzecia: strefa czasowa. Serwer może działać w innym czasie niż Ty. Jeśli ustawiasz zadanie „o 2:00”, a serwer jest w UTC, to zadanie działa, tylko o innej godzinie. W nocy zmiany czasu (okolice 2:00–3:00) zadanie może się nie wykonać albo wykonać dwa razy. Generator pilnuje składni, ale kontekst (serwer, kontener, użytkownik) nadal jest po Twojej stronie. Dni 29–31 też mają haczyk: w krótszych miesiącach zadanie się nie uruchomi, o czym generator przypomni.
Obciążenie i bezpieczeństwo: małe rzeczy, które robią dużą różnicę
Ustawienie harmonogramu to jedno, ale utrzymanie go w ryzach to drugie. Jeśli uruchamiasz zadanie często, a ono generuje dużo wyjścia (stdout/stderr), cron potrafi zasypać Cię mailami systemowymi albo zajmować zasoby. Dlatego warto mieć nawyk przekierowania logów oraz świadomego dobierania częstotliwości.
Opcja „Wycisz” dopisuje do polecenia >/dev/null 2>&1, czyli odrzuca całe wyjście razem z błędami. Jeśli wynik ma znaczenie, zostaw ją wyłączoną i dopisz w poleceniu przekierowanie do pliku, np. >> /var/log/backup.log 2>&1. To daje ślad: co się uruchomiło, kiedy i z jakim efektem. Pamiętaj też o znaku %: w crontabie oznacza nowy wiersz, więc w poleceniu zapisz go jako \% (np. date +\%Y) – generator ostrzeże, jeśli go wykryje.
- Upewnij się, że polecenie działa ręcznie w terminalu (ten sam użytkownik).
- Sprawdź, czy ścieżki do plików są absolutne (cron nie wie, w jakim katalogu jesteś).
- Dodaj logowanie wyjścia (stdout i stderr), jeśli wynik ma znaczenie.
- Przy częstych uruchomieniach unikaj nakładania się procesów (flock, timeout).
- Zweryfikuj strefę czasową serwera poleceniem
date, jeśli godziny się nie zgadzają. - Nie ustawiaj „co minutę” dla ciężkich zadań, jeśli nie musisz.
Najczęstsze pytania (FAQ)
Czy ten generator CRON jest darmowy i działa bez rejestracji?
Tak, korzystasz od razu, bez zakładania konta. Ustawiasz pola, a wyrażenie i wpis do crontaba przeliczają się na bieżąco i można je skopiować jednym przyciskiem.
Jak ustawić uruchamianie co 5 albo co 10 minut?
Użyj kroku w polu minut: */5 * * * * (288 uruchomień na dobę) albo */10 * * * * (144). „Co 5 minut” jest gotowym przyciskiem, a */10 wpiszesz w szablonie „Własny”. Upewnij się, że zadanie nie trwa dłużej niż interwał, bo kolejne uruchomienia zaczną się nakładać.
Czemu CRON działa inaczej, niż się spodziewam, gdy ustawiam dzień miesiąca i dzień tygodnia?
Gdy oba pola mają wartość inną niż *, klasyczny cron uruchamia zadanie, gdy spełniony jest którykolwiek warunek, a nie oba naraz. Dla planu „w każdy poniedziałek” zostaw dzień miesiąca jako *; warunek „oba naraz” sprawdź datą w skrypcie.
Jak poprawnie logować wyjście i błędy z crona?
Dopisz do polecenia >> /ścieżka/do/pliku.log 2>&1, żeby standardowe wyjście i błędy trafiały do jednego pliku. Logi trzeba rotować (np. logrotate), inaczej po kilku miesiącach potrafią zająć sporo miejsca na dysku.
Czemu zadanie nie uruchamia się, mimo że wyrażenie wygląda dobrze?
Przyczyna zwykle leży obok harmonogramu: wpis u innego użytkownika, brak uprawnień, zła ścieżka do interpretera lub pliku, brak zmiennych środowiskowych albo polecenie działa tylko w konkretnym katalogu. Dodaj logowanie, użyj ścieżek absolutnych i uruchom to samo polecenie ręcznie jako użytkownik, który ma wpis w cronie.
Czy mogę używać generatora do poleceń aplikacji (np. artisan, skrypty Node, Python)?
Tak, dla crona nie ma znaczenia, czy uruchamiasz backup bazy, czy polecenie frameworka. Podawaj pełną ścieżkę do interpretera (np. /usr/bin/php, a nie samo php) i w razie potrzeby przejdź do katalogu aplikacji: cd /home/user/app && ….