W świecie Linuksa automatyzacja zadań to codzienność. Niezależnie od tego, czy chcesz wykonywać kopie zapasowe, uruchamiać skrypty o określonych godzinach, czy planować jednorazowe działania — do dyspozycji masz trzy sprawdzone narzędzia: cron, anacron i at.
W tym wpisie pokażę Ci, jak ich używać w praktyce.
Cron – precyzyjna cykliczność
cron
to klasyk. Działa jako demon w tle i pozwala uruchamiać zadania z dokładnością co do minuty.
📁 Gdzie szukać konfiguracji:
/etc/crontab
– główny systemowy harmonogram/etc/cron.d/
– niestandardowe konfiguracjecrontab -e
– edycja zadań użytkownika
Składnia crona:
* * * * * /ścieżka/do/polecenia
| | | | |
| | | | +----- dzień tygodnia (0-6, gdzie 0 = niedziela)
| | | +------- miesiąc (1-12)
| | +--------- dzień miesiąca (1-31)
| +----------- godzina (0-23)
+------------- minuta (0-59)
# Codziennie o 3:15
15 3 * * * /usr/bin/backup.sh
# Co godzinę w godzinach pracy
0 9-17 * * 1-5 /usr/bin/check_mail.sh
# Co 10 minut
*/10 * * * * /usr/bin/check_status.sh
# Pierwszy dzień miesiąca o północy
0 0 1 * * /usr/bin/monthly_report.sh
Przydatne komendy:
crontab -e # edytuj własne zadania
crontab -l # wyświetl listę
crontab -r # usuń wszystkie
Anacron – gdy Twój system nie działa 24/7
Masz laptopa lub serwer, który nie jest zawsze włączony? anacron
jest dla Ciebie. W przeciwieństwie do cron
, nadrobi zaległe zadania po restarcie systemu.
Konfiguracja:
# okres opóźnienie identyfikator polecenie
1 5 daily.backup /usr/bin/backup.sh
7 10 weekly.report /usr/bin/generate_report.sh
@monthly 15 monthly.clean /usr/bin/clean_cache.sh
Co oznaczają pola:
period
– co ile dnidelay
– opóźnienie (w minutach) po starcie systemujob-identifier
– etykieta (do logów)command
– co wykonać
At – jednorazowe zadania na konkretną godzinę
Jeśli potrzebujesz wykonać zadanie raz, ale w przyszłości, użyj at
.
# Za 5 minut
echo "/usr/bin/backup.sh" | at now + 5 minutes
# Dziś o 23:30
at 23:30 today <<EOF
/usr/bin/nightly_cleanup.sh
EOF
# Jutro o 9:00
at 9:00 tomorrow <<EOF
/usr/bin/send_reminders.sh
EOF
# Za tydzień
at now + 1 week <<EOF
/usr/bin/weekly_maintenance.sh
EOF
Zarządzanie:
atq # lista zaplanowanych zadań
atrm <id> # usuń zadanie o ID