Cron & Crontab Cheatsheet

Kompendium wiedzy o planowaniu zadań w systemach Unix/Linux. Od składni, przez operatory, po obsługę logów.

1. Składnia Crona (The Syntax)

Każda linia w pliku crontab składa się z 5 pól czasu oraz komendy do wykonania.

* * * * * polecenie_do_wykonania
| | | | |
| | | | +----- Dzień tygodnia (0 - 7)
| | | |        (Niedziela = 0 lub 7)
| | | +------- Miesiąc (1 - 12)
| | +--------- Dzień miesiąca (1 - 31)
| +----------- Godzina (0 - 23)
+------------- Minuta (0 - 59)

Przykłady zapisu:

  • * : Każda jednostka (np. każda minuta).
  • 30 : Dokładnie w 30 minucie/godzinie.

2. Operatory Specjalne

Operator Opis Przykład
, (Przecinek) Lista wartości 15,45 (w 15 i 45 minucie)
- (Myślnik) Zakres wartości 1-5 (od poniedziałku do piątku)
/ (Slash) Krok (co X jednostek) */10 (co 10 minut)

Złożony przykład:

# Co 15 minut, w godzinach 9-17, dni robocze
*/15 9-17 * * 1-5 /skrypt.sh

3. Komendy Terminala

Podstawowa obsługa

  • **Edycja pliku użytkownika:**
    crontab -e
  • **Wyświetlenie listy zadań:**
    crontab -l
  • **Usunięcie całego crontaba:**
    crontab -r

Zarządzanie jako root (lub inny user)

# Edycja crontaba dla użytkownika 'www-data'
sudo crontab -u www-data -e

4. Predefiniowane Skróty

Można użyć tych słów kluczowych zamiast 5 gwiazdek.

Skrót Odpowiednik Opis
@reboot - Raz, przy starcie systemu
@yearly 0 0 1 1 * Raz w roku
@monthly 0 0 1 * * Raz w miesiącu
@weekly 0 0 * * 0 Raz w tygodniu (Ndz)
@daily 0 0 * * * Raz dziennie (północ)
@hourly 0 * * * * Raz na godzinę

5. Obsługa Wyjścia (Output)

Wyciszanie wyjścia

Aby cron nie wysyłał maili z wynikami skryptu ("spamu"), przekieruj wyjście.

# Ukrycie STDOUT i STDERR (cisza absolutna)
* * * * * cmd > /dev/null 2>&1
  • > : Nadpisuje plik.
  • >> : Doppisuje do końca pliku (append).
  • 2>&1 : Przekierowuje błędy (2) do standardowego wyjścia (1).

Logowanie do pliku

# Zapisz logi, by debugować błędy
30 2 * * * backup.sh >> /var/log/backup.log 2>&1

6. Praktyczne Przykłady

  • Uruchom PHP co minutę (np. Laravel Schedule):
    * * * * * cd /path/to/project && php artisan schedule:run >> /dev/null 2>&1
  • Backup bazy danych codziennie o 3:00:
    0 3 * * * /usr/bin/mysqldump -u user -ppass db > /tmp/db.sql
  • Sprawdź dysk co godzinę:
    0 * * * * /home/user/scripts/check_disk.sh
  • Restart serwera co niedzielę o 4 rano:
    0 4 * * 0 /sbin/shutdown -r now

NAJCZĘSTSZE PROBLEMY I SŁOWNICZEK