CodeGym /Kursy /Docker SELF /Przetwarzanie danych tekstowych i aktualizacja systemu

Przetwarzanie danych tekstowych i aktualizacja systemu

Docker SELF
Poziom 8 , Lekcja 6
Dostępny

Przetwarzanie danych tekstowych i aktualizacja systemu

1. Przetwarzanie danych tekstowych

Dziś zbierzemy całą tę wiedzę i zastosujemy ją w praktyce, aby przetworzyć dane tekstowe i przeprowadzić aktualizację systemu. Poznamy realne scenariusze użycia: od analizy dzienników systemowych po automatyzację instalacji i konfiguracji pakietów.

Zadanie 1: Wyszukiwanie błędów w dzienniku

Scenariusz: Wyobraź sobie, że jesteś administratorem systemu i musisz szybko zrozumieć, co dzieje się w systemie. W tym celu będziemy analizować dzienniki systemowe (/var/log/syslog).

Krok 1: Filtrowanie według słów kluczowych

Zaczniemy od wyszukiwania linii związanych z błędami, używając grep:

grep "error" /var/log/syslog

O, coś znaleźliśmy! Ale poprawmy to. Załóżmy, że chcesz ignorować wielkość liter (czy to ERROR czy error):

grep -i "error" /var/log/syslog

Teraz zobaczymy więcej dopasowań. Ale czasami trzeba znaleźć wszystko, co nie jest związane z błędami:

grep -v "error" /var/log/syslog

Krok 2: Upraszczanie wyniku za pomocą cut

Załóżmy, że interesuje Cię tylko znacznik czasu i wiadomość. Wyciągnijmy odpowiednie kolumny:

grep "error" /var/log/syslog | cut -d' ' -f1,2,3,5-

Używamy tutaj cut, aby podzielić linie według spacji -d' ', wybierając kolumny 1, 2, 3 (czas) i resztę tekstu.

Zadanie 2: Liczenie częstotliwości zdarzeń

Teraz chcemy zrozumieć, jak często pojawiają się błędy. Łączymy grep, cut i sort z uniq:

grep "error" /var/log/syslog | cut -d' ' -f5 | sort | uniq -c

Ta komenda:

  1. Wyszukuje linie z błędami za pomocą grep.
  2. Wyciąga tylko informacje o źródle błędu cut.
  3. Sortuje dane sort, aby uniq mógł policzyć liczbę powtórzeń każdej linii.

Wynik będzie wyglądać tak:

  10 systemd
   7 kernel
   5 cron

Błędy od systemd pojawiają się najczęściej. Czas wyciągnąć wnioski!


2. Pobieranie i przetwarzanie danych zewnętrznych

Scenariusz: Analiza danych z zewnętrznego źródła

Załóżmy, że musimy pobrać plik tekstowy z danymi (na przykład plik log) z serwera internetowego i przeanalizować go. Zróbmy to krok po kroku.

Krok 1: Pobieranie pliku

Najpierw pobierzemy plik za pomocą wget:

wget -O data.log http://example.com/logs/data.log

Plik został pobrany i zapisany jako data.log. W przypadku błędu pobierania, dodajemy opcję wznowienia:

wget -c -O data.log http://example.com/logs/data.log

Jeśli wolisz używać curl:

curl -o data.log http://example.com/logs/data.log

Krok 2: Wyszukiwanie informacji

Teraz szukamy wierszy zawierających określony wzorzec, na przykład WARNING:

grep "WARNING" data.log

Krok 3: Formatowanie danych z awk

Załóżmy, że w logu są trzy kolumny: data, czas i wiadomość. Chcemy wyświetlić tylko datę i wiadomość:

awk '{print $1, $3}' data.log

A jeśli potrzeba przefiltrować wiersze, w których wiadomość zawiera słowo error, można dodać warunek:

awk '/error/ {print $1, $3}' data.log

3. Aktualizacja systemu za pomocą apt-get i yum

Teraz przejdźmy do bardziej "systemowych" zadań. Aktualizacja pakietów to kluczowy proces, aby utrzymać bezpieczeństwo i stabilność systemu. Pokażemy, jak to zrobić.

Scenariusz: Aktualizacja systemu

Krok 1: Aktualizacja listy pakietów

Dla dystrybucji opartych na Debian:

sudo apt-get update

Dla dystrybucji opartych na RedHat:

sudo yum check-update

Krok 2: Instalacja aktualizacji

Debian-based:

sudo apt-get upgrade
RedHat-based:
sudo yum update

Krok 3: Instalacja nowego pakietu

Na przykład, aby zainstalować edytor tekstu vim:

sudo apt-get install vim
sudo yum install vim

Przydatna wskazówka

Jeśli dokładnie wiesz, jaki pakiet chcesz zainstalować, ale nie jesteś pewien jego nazwy, użyj apt search lub yum search:

apt search nazwa_pakietu
yum search nazwa_pakietu

4. Zadanie końcowe

Zadanie: Automatyzacja aktualizacji i przetwarzania danych

  1. Stwórz bash-script, który:
    • Aktualizuje system;
    • Pobiera plik tekstowy (na przykład log);
    • Analizuje ten plik, szukając błędów;
    • Zapisuje wyniki analizy do nowego pliku.

Oto przykład takiego skryptu:

# Krok 1: Aktualizacja systemu
echo "Aktualizacja systemu..."
sudo apt-get update && sudo apt-get -y upgrade

# Krok 2: Pobieranie pliku
echo "Pobieramy plik log..."
wget -O data.log http://example.com/logs/data.log

# Krok 3: Analiza pliku
echo "Analizujemy plik log, szukając błędów..."
grep "ERROR" data.log | cut -d' ' -f1,5- | sort | uniq -c > analysis.log

echo "Analiza zakończona. Wyniki zapisano w analysis.log"

Zapisz ten skrypt, na przykład jako update_and_analyze.sh, nadaj prawa wykonania:

chmod +x update_and_analyze.sh

I uruchom:

./update_and_analyze.sh

Uwaga: typowe błędy

  • Jeśli zobaczysz komunikat "brak dostępu", upewnij się, że uruchamiasz skrypt jako użytkownik z uprawnieniami sudo.

  • Jeśli wget lub curl nie są zainstalowane, dodaj ich instalację na początku skryptu:

    sudo apt-get install -y wget
    

Jaka jest praktyczna korzyść?

Te umiejętności przydadzą Ci się nie tylko w pracy, ale także na rozmowach kwalifikacyjnych. Umiejętność znajdowania błędów w logach, filtrowania danych i uruchamiania aktualizacji systemu jest ceniona wśród administratorów i inżynierów. Skrypty pozwalają automatyzować zadania, oszczędzając czas i gwarantując brak błędów ludzkich.

P.S. Pamiętaj, w realnym świecie będziesz spotykać się z zadaniami, w których trzeba łączyć polecenia, modyfikować dane wyjściowe i automatycznie konfigurować system. Dzisiejszy przykład to tylko wierzchołek góry lodowej Twojej przyszłej praktyki.

1
Опрос
Narzędzia systemowe w Linux,  8 уровень,  6 лекция
недоступен
Narzędzia systemowe w Linux
Narzędzia systemowe w Linux
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION