Automatyzacja zadań za pomocą cron
i at
1. Po co automatyzacja?
Automatyzacja zadań to absolutna podstawa dla każdego administratora systemu, szczególnie w Linuxie. Wyobraź sobie pracę bez automatyzacji: każdego ranka wchodzisz do terminala i wpisujesz tę samą komendę, aby zrobić kopie zapasowe swoich danych, zarchiwizować je, wysłać na serwer i wyczyścić stare logi. Po tygodniu takiej rutyny zaczniesz się zastanawiać nad zmianą zawodu… Ale nie, jesteśmy tutaj, aby nauczyć Cię, jak uczynić maszynę swoim wiernym sługą.
Dzisiejszy wykład to magia czasu i zadań. Nauczymy się automatyzować procesy na poziomie systemu operacyjnego przy użyciu niesamowitych narzędzi cron
i at
. Te narzędzia oszczędzają ogromną ilość czasu, a czasem także nerwy.
Automatyzacja to koło ratunkowe dla każdej rutynowej czynności. Na przykład, masz skrypt, który generuje raport dla Twojego szefa. Ten raport jest potrzebny każdego ranka o 8:00. Zamiast wstawać wcześniej, aby ręcznie uruchomić skrypt (i ryzykować utknięcie z filiżanką kawy i zapomnienie o jego uruchomieniu), możesz skonfigurować cron
do automatycznego wykonania tego zadania.
cron
to narzędzie do zadań cyklicznych, które powtarzają się w ustalonym czasie.
at
to narzędzie do jednorazowych zadań, które powinny zostać wykonane w określonym momencie.
2. Praca z cron
Co to jest cron
?
cron
— to demon (proces systemowy), który działa w tle i wykonuje zaplanowane zadania o określonym czasie. Harmonogramy dla tych zadań przechowywane są w tzw. crontab
— plikach tekstowych. Każdy użytkownik w systemie może mieć swój własny crontab
.
Twoje pierwsze zadanie w cron
Tak wygląda podstawowe polecenie do pracy z cron
:
crontab -e
To polecenie otwiera crontab
bieżącego użytkownika do edycji. Możesz dodać zadania, określając format harmonogramu.
Składnia harmonogramu
Linia w crontab
składa się z sześciu pól:
* * * * * KOMENDA
- - - - -
| | | | └─ Dzień tygodnia (0–7, gdzie 0 i 7 — niedziela)
| | | └── Miesiąc (1–12)
| | └─── Dzień miesiąca (1–31)
| └──── Godziny (0–23)
└───── Minuty (0–59)
Przykład: wykonaj echo "Hello, Linux"
codziennie w południe:
0 12 * * * echo "Hello, Linux"
Praktyka: uruchom proste zadanie
Otwórz swój
crontab
do edycji:crontab -e
Dodaj linię:
*/5 * * * * echo "Hello, world! The time is $(date)" >> ~/cron_test.log
To zadanie będzie dodawać linię z bieżącym czasem do pliku
cron_test.log
co 5 minut. Zapisz plik i wyjdź.Sprawdź, czy zadanie się uruchomiło:
tail -f ~/cron_test.log
Po 5 minutach powinieneś zobaczyć zaktualizowany wpis w pliku.
Podgląd zaplanowanych zadań
Aby sprawdzić bieżące zadania:
crontab -l
Usuwanie zadań
Aby usunąć wszystkie zadania z crontab
:
crontab -r
Przykłady rzeczywistego użycia cron
Archiwizacja plików
Załóżmy, że chcesz archiwizować pliki z katalogu /var/logs
każdej nocy o 3:00:
Napisz skrypt:
#!/bin/bash tar -czf /backup/logs_$(date +\%Y-\%m-\%d).tar.gz /var/logs
Ustaw harmonogram w
crontab
:0 3 * * * /path/to/script.sh
I już! Nigdy więcej nie zapomnisz o wykonaniu kopii zapasowej.
Powiadomienie o użyciu systemu
Na przykład, chcesz otrzymać powiadomienie, jeśli obciążenie procesora przekroczy 80%:
Napisz skrypt:
#!/bin/bash LOAD=$(uptime | awk '{print $10}' | sed 's/,//') if (( $(echo "$LOAD > 0.80" | bc -l) )); then echo "High CPU load: $LOAD" | mail -s "CPU Alert" you@example.com fi
Ustaw harmonogram:
*/10 * * * * /path/to/cpu_check.sh
3. Praca z at
at
pozwala na wykonanie jednorazowego zadania o określonym czasie. W odróżnieniu od cron
, zadania at
nie są powtarzalne. Jest to wygodne przy zadaniach typu "zrób to jutro o 9 rano".
Proste zadanie z at
Oto przykład, jak zaplanować zadanie:
echo "echo 'Cześć, Linux!'" | at now + 1 minute
Ta komenda uruchomi komendę echo 'Cześć, Linux!'
za jedną minutę.
Możesz podać dokładny czas i datę:
echo "echo 'Backup zakończony!'" | at 10:30 AM tomorrow
Zarządzanie zadaniami at
Po dodaniu zadania możesz zobaczyć ich listę:
atq
Przykład wyjścia:
1 Tue Oct 31 10:30:00 2023 a user
2 Tue Oct 31 11:00:00 2023 a user
Aby usunąć zadanie:
atrm <job_id>
Praktyka: użycie at
do powiadomień
Utwórz zadanie do powiadomienia za 2 minuty:
echo "notify-send 'Czas minął!'" | at now + 2 minutes
Sprawdź listę zadań:
atq
Oczekuj pojawienia się wyskakującego okna za 2 minuty.
4. Typowe błędy podczas pracy z cron
i at
Jednym z najczęstszych problemów jest podanie nieprawidłowej ścieżki do skryptu lub polecenia. Pamiętaj, że cron
działa w minimalnym środowisku, więc może nie znać twoich zmiennych, takich jak PATH
. Najlepszym podejściem jest zawsze korzystanie z ścieżek absolutnych.
Na przykład, jeśli chcesz uruchomić skrypt Python:
*/30 * * * * /usr/bin/python3 /path/to/script.py
Upewnij się również, że skrypt ma uprawnienia do wykonania:
chmod +x /path/to/script.sh
Gdzie to się przyda?
Umiejętności automatyzacji są wymagane w prawie każdym zawodzie związanym z IT. Możesz wykorzystać tę wiedzę:
- Do automatyzacji rutynowych zadań systemowych.
- Do konfiguracji okresowych kopii zapasowych.
- Do monitorowania stanu serwerów.
- Podczas rozmów kwalifikacyjnych, gdzie często pytają o
cron
i automatyzację.
Jeśli pracujesz w DevOps, administracji systemów lub po prostu chcesz być bardziej produktywnym, zrozumienie cron
i at
pomoże ci się wyróżnić i zaoszczędzić mnóstwo czasu.
Teraz już wiesz, jak sprawić, by Linux działał dla ciebie. Następnym razem, gdy ktoś będzie narzekał na rutynowe zadania, po prostu się uśmiechnij, bo ty jesteś mistrzem automatyzacji!
GO TO FULL VERSION