W tym artykule
Czym jest Crontab?
Crontab (tabela cron) to oparty na czasie harmonogram zadan w systemach operacyjnych typu Unix. Pozwala planowac automatyczne wykonywanie polecen lub skryptow w określonych odstępach czasu.
Każdy użytkownik systemu moze miec własny plik crontab. Plik zawiera liste zadan cron, gdzie każdy wiersz definiuje harmonogram za pomoca pieciopolowego wyrazu czasowego.
Skladnia wyrażeń Cron
Wyrażenie cron składa sie z pieciu pol oddzielonych spacjami:
- Minuta (0-59) — określa, o ktorej minucie ma sie uruchomic żądanie
- Godzina (0-23) — określa godzine w formacie 24-godzinnym
- Dzien miesiąca (1-31) — określa dzien miesiąca
- Miesiąc (1-12) — określa miesiąc roku
- Dzien tygodnia (0-7, gdzie 0 i 7 to niedziela)
Znaki specjalne: * (dowolna wartość), / (wartości krokowe), - (zakresy) i przecinek (listy).
Popularne wzorce Cron
Najczęściej używane wyrażenia cron:
- */5 * * * * — co 5 minut, typowo do kontroli stanu
- 0 * * * * — co godzine na minucie 0
- 0 0 * * * — codziennie o północy, standard dla kopii zapasowych
- 0 0 * * 1-5 — każdy dzien roboczy o północy
- 0 0 1 * * — pierwszego dnia każdego miesiąca o północy
- 0 9,17 * * 1-5 — o 9:00 i 17:00 w dni robocze
Wypróbuj za darmo — bez rejestracji
Zbuduj wyrażenie Cron →Typowe zastosowania
Żądania cron automatyzuja praktycznie każde powtarzalne żądanie systemowe:
- Rotacja i czyszczenie logow — automatyczne kompresowanie lub usuwanie starych plikow logow
- Kopie zapasowe bazy danych — planowanie regularnych polecen kopii zapasowej
- Generowanie raportow — kompilowanie raportow dziennych, tygodniowych lub miesięcznych
- Czyszczenie pamięci podręcznej — okresowe usuwanie wygaslych wpisow cache
- Monitoring systemu — uruchamianie kontroli stanu w regularnych odstępach
Wskazowki i pułapki
Nawet doswiadczeni programiści napotykaja typowe pułapki cron:
- Swiadomosc strefy czasowej — cron domyślnie używa systemowej strefy czasowej. Ustaw TZ lub użyj UTC
- Nakładające sie żądania — użyj flock aby zapobiec jednoczesnym instancjom
- Problemy z PATH — cron działa z minimalnym srodowiskiem. Zawsze używaj ścieżek bezwzględnych
- Obsluga wyjścia — cron domyślnie wysyła stdout i stderr mailem. Przekieruj do pliku logu
- Debugowanie — sprawdź /var/log/syslog lub /var/log/cron
Często zadawane pytania
Czy cron moze planowac żądania z dokładnością do sekundy?
Standardowy cron nie obsługuje sekund. Użyj obejscia lub przejdz na timery systemd.
Jaka jest różnica między cron a timerami systemd?
Cron to tradycyjny harmonogram Unix. Timery systemd oferuja dokładność poniżej minuty, ale sa specyficzne dla Linuxa.
Jak przetestowac żądanie cron?
Najpierw uruchom polecenie ręcznie, zasymuluj środowisko cron za pomoca env -i, a następnie zaplanuj uruchomienie co minute w celu weryfikacji.