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 okreslonych odstepach czasu.
Kazdy uzytkownik systemu moze miec wlasny plik crontab. Plik zawiera liste zadan cron, gdzie kazdy wiersz definiuje harmonogram za pomoca pieciopolowego wyrazu czasowego.
Skladnia wyrazen Cron
Wyrazenie cron sklada sie z pieciu pol oddzielonych spacjami:
- Minuta (0-59) — okresla, o ktorej minucie ma sie uruchomic zadanie
- Godzina (0-23) — okresla godzine w formacie 24-godzinnym
- Dzien miesiaca (1-31) — okresla dzien miesiaca
- Miesiac (1-12) — okresla miesiac roku
- Dzien tygodnia (0-7, gdzie 0 i 7 to niedziela)
Znaki specjalne: * (dowolna wartosc), / (wartosci krokowe), - (zakresy) i przecinek (listy).
Popularne wzorce Cron
Najczesciej uzywane wyrazenia cron:
- */5 * * * * — co 5 minut, typowo do kontroli stanu
- 0 * * * * — co godzine na minucie 0
- 0 0 * * * — codziennie o polnocy, standard dla kopii zapasowych
- 0 0 * * 1-5 — kazdy dzien roboczy o polnocy
- 0 0 1 * * — pierwszego dnia kazdego miesiaca o polnocy
- 0 9,17 * * 1-5 — o 9:00 i 17:00 w dni robocze
Wypróbuj za darmo — bez rejestracji
Zbuduj wyrazenie Cron →Typowe zastosowania
Zadania cron automatyzuja praktycznie kazde powtarzalne zadanie 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 miesiecznych
- Czyszczenie pamieci podrecznej — okresowe usuwanie wygaslych wpisow cache
- Monitoring systemu — uruchamianie kontroli stanu w regularnych odstepach
Wskazowki i pulapki
Nawet doswiadczeni programisci napotykaja typowe pulapki cron:
- Swiadomosc strefy czasowej — cron domyslnie uzywa systemowej strefy czasowej. Ustaw TZ lub uzyj UTC
- Nakladajace sie zadania — uzyj flock aby zapobiec jednoczesnym instancjom
- Problemy z PATH — cron dziala z minimalnym srodowiskiem. Zawsze uzywaj sciezek bezwzglednych
- Obsluga wyjscia — cron domyslnie wysyla stdout i stderr mailem. Przekieruj do pliku logu
- Debugowanie — sprawdz /var/log/syslog lub /var/log/cron
Czesto zadawane pytania
Czy cron moze planowac zadania z dokladnoscia do sekundy?
Standardowy cron nie obsluguje sekund. Uzyj obejscia lub przejdz na timery systemd.
Jaka jest roznica miedzy cron a timerami systemd?
Cron to tradycyjny harmonogram Unix. Timery systemd oferuja dokladnosc ponizej minuty, ale sa specyficzne dla Linuxa.
Jak przetestowac zadanie cron?
Najpierw uruchom polecenie recznie, zasymuluj srodowisko cron za pomoca env -i, a nastepnie zaplanuj uruchomienie co minute w celu weryfikacji.