Praxisprojekte
Praxisprojekt: Logdateien analysieren
Ein kleines Projekt verbindet Pipes, grep, cut, sort, uniq, Schleifen und Fehlerbehandlung zu einem realistischen Workflow.
Nur wenn Sie diesen Button verwenden, wird Ihr Lernfortschritt lokal in diesem Browser gespeichert. Es erfolgt keine Übertragung an den Server.
Ziel
Wir möchten aus einer Logdatei relevante Fehlermeldungen extrahieren, Häufigkeiten zusammenfassen und die wichtigsten Muster anzeigen. Die genaue Struktur hängt vom verwendeten Logformat ab.
Erste Analyse als Pipeline
Angenommen, jede relevante Zeile enthält ERROR und das dritte durch Leerzeichen getrennte Feld enthält eine Komponente. Dann kann eine erste explorative Pipeline so aussehen:
grep 'ERROR' app.log | awk '{print $3}' | sort | uniq -c | sort -nr | headDanach robust machen
Aus der explorativen Pipeline wird erst dann ein brauchbares Skript, wenn Eingabedatei, Fehlerfälle, Exit-Status und Ausgabeformat sauber behandelt werden. Genau dieser Schritt ist didaktisch wichtig: Shell-Scripting ist nicht nur das Aneinanderreihen von Kommandos.
#!/usr/bin/env bash
set -euo pipefail
log=${1:?Usage: $0 LOGFILE}
[[ -r $log ]] || { echo "Nicht lesbar: $log" >&2; exit 1; }
grep 'ERROR' "$log" | awk '{print $3}' | sort | uniq -c | sort -nr | headÜbung
Jetzt selbst ausprobieren
Erweitern Sie den Analyzer um ein optionales Level als zweites Argument.
Lösung / Hinweis anzeigen
Zum Beispiel `level=${2:-ERROR}` und anschließend einen passenden Filter verwenden.
Wissenscheck
Warum steht `sort` vor `uniq -c`?
`uniq` zählt nur aufeinanderfolgende gleiche Werte.
Mit Trainer vertiefen
Dieses Thema als Schulung?
Auf linux-kurse.eu finden Sie Linux-, Administrations- und Bash-Schulungen von Bodenseo.
Linux-Schulungen ansehen