CodeGym /Kursy /Docker SELF /Automatyzacja zadań za pomocą cron i at

Automatyzacja zadań za pomocą cron i at

Docker SELF
Poziom 3 , Lekcja 5
Dostępny

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

  1. Otwórz swój crontab do edycji:

    crontab -e
    
  2. 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ź.

  3. 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:

  1. Napisz skrypt:

    #!/bin/bash
    tar -czf /backup/logs_$(date +\%Y-\%m-\%d).tar.gz /var/logs
  2. 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%:

  1. 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
  2. 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ń

  1. Utwórz zadanie do powiadomienia za 2 minuty:

    echo "notify-send 'Czas minął!'" | at now + 2 minutes
    
  2. Sprawdź listę zadań:

    atq
    
  3. 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!

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION