Crontab
Crontab (od cron table — tablica crona) to plik zawierający harmonogram zadań wykonywanych przez demona cron, a zarazem polecenie systemowe służące do zarządzania tym plikiem. Każdy użytkownik systemu uniksowego może mieć własny crontab, a oprócz nich istnieje crontab systemowy (/etc/crontab) i katalogi z wpisami pakietów (/etc/cron.d).
Jak działa crontab
Harmonogramem zarządza się poleceniem crontab z odpowiednim przełącznikiem:
- crontab -e — edycja harmonogramu bieżącego użytkownika (z walidacją składni przy zapisie),
- crontab -l — wyświetlenie aktualnych wpisów,
- crontab -r — usunięcie całego harmonogramu (bez pytania o potwierdzenie!),
- crontab -u nazwa -e — edycja crontaba innego użytkownika (wymaga uprawnień roota).
Każdy wiersz pliku to jedno zadanie (cron job): pięć pól czasu i polecenie. Oprócz zadań crontab może zawierać zmienne środowiskowe — najczęściej używane to MAILTO (adres, na który cron wyśle wyjście i błędy zadań), PATH (ścieżki wyszukiwania programów) oraz SHELL. Wiersze zaczynające się od # są komentarzami. W crontabie systemowym, w odróżnieniu od crontabów użytkowników, przed poleceniem występuje dodatkowe pole z nazwą użytkownika, z którego uprawnieniami zadanie ma się wykonać.
Zastosowanie w praktyce
Crontab to centralne miejsce, w którym administrator serwera dokumentuje całą automatyzację konta: backupy, czyszczenie logów, harmonogramy aplikacji, synchronizacje. Na serwerze VPS zarządza się nim przez SSH; na hostingu współdzielonym panele (DirectAdmin, cPanel, Plesk) udostępniają graficzny edytor, który w tle zapisuje wpisy do crontaba konta.
Kilka sprawdzonych nawyków:
- opatruj wpisy komentarzem — po roku nikt nie pamięta, co robi skrypt3.sh,
- trzymaj kopię crontaba w repozytorium konfiguracji (wystarczy crontab -l do pliku),
- ustaw MAILTO lub przekierowanie wyjścia do logów, aby błędy nie znikały,
- po edycji sprawdź w logu systemowym, czy zadanie faktycznie wystartowało o czasie.
Warto też wiedzieć, że dostęp do crontaba można ograniczać plikami /etc/cron.allow i /etc/cron.deny — przydatne na serwerach współdzielonych przez wielu użytkowników.
Powiązane pojęcia
Najczęstsze pytania
Jak edytować crontab i gdzie jest zapisywany?
Wydaj polecenie crontab -e — system otworzy harmonogram w domyślnym edytorze i po zapisaniu zweryfikuje składnię. Pliki przechowywane są zwykle w /var/spool/cron/crontabs/ (Debian/Ubuntu) lub /var/spool/cron/ (RHEL), ale nie edytuje się ich bezpośrednio — zawsze przez polecenie crontab.
Czy crontab -r naprawdę usuwa cały harmonogram bez potwierdzenia?
Tak — crontab -r natychmiast i bezpowrotnie kasuje cały crontab bieżącego użytkownika. Litera „r” sąsiaduje na klawiaturze z „e”, więc pomyłki się zdarzają. Warto trzymać kopię harmonogramu w repozytorium lub regularnie zrzucać go poleceniem crontab -l > backup.txt.
