linux-cli-shell cli text-processing logs head tail wc

File Analysis: head, tail & wc (Artikel 261)

Schnelle Analyse von Textdateien und Logs. Erfahren Sie alles über das Auslesen von Dateianfängen und -enden sowie das statistische Erfassen von Inhalten mittels wc.

# File Analysis: Die Klassiker head, tail und wc

TL;DR / Management Summary Wer riesige Logfiles (GB-Bereich) analysiert, kann diese nicht in einem Editor öffnen. Wir brauchen Werkzeuge, die nur Bruchstücke lesen. head zeigt den Anfang (Config-Header), tail das Ende (aktuelle Fehler) und wc liefert uns die harten Fakten (Anzahl der Zeilen). Ein Senior Admin nutzt tail -f als sein wichtigstes Werkzeug für das Echtzeit-Troubleshooting.


# 1. Einführung & Architektur

Effizienz durch Stream-Processing.

Diese Tools lesen die Datei sequenziell (oder springen direkt zum Ende), ohne den gesamten Inhalt in den RAM zu laden.

# Der Analyse-Stack (Mermaid)

graph LR
    A[Huge Log File: 10GB] --> B{Action}
    B -->|First 10 lines| C[head]
    B -->|Last 10 lines| D[tail]
    B -->|Count lines| E[wc -l]
    D -->|Continuous Follow| F[tail -f]
    C/D/E --> G[Standard Output]

# 2. head & tail: Den Fokus setzen

Anfang und Ende.

# head (Vorschau auf Configs)

# Zeige die ersten 20 Zeilen einer Datei
head -n 20 /etc/nginx/nginx.conf

# tail (Log-Analyse)

# Zeige die letzten 50 Zeilen
tail -n 50 /var/log/messages

# 3. Echtzeit-Monitoring mit tail -f

Dem Puls des Systems lauschen.

Dies ist der “Daily Driver” für Admins.

# Folgt neuen Log-Einträgen live
sudo tail -f /var/log/nginx/error.log

# Pro-Tipp: tail -F (Groß-F)

Wenn ein Log-File rotiert wird (gelöscht und neu erstellt), verliert tail -f den Dateipointer. tail -F erkennt die neue Datei automatisch und folgt ihr weiter.


# 4. Day-2 Operations: wc (Word Count)

Statistiken auf Knopfdruck.

# Zeilen zählen

# Wie viele User sind im System?
wc -l /etc/passwd

# Wie viele Fehler gab es heute?
grep "ERROR" app.log | wc -l

# Byte-Größe ermitteln

# Schneller als du -sh für einzelne Dateien
wc -c < binary_file

# 5. Troubleshooting & “War Stories”

Wenn das Log zu schnell wächst.

# Story 1: “Der Terminal-Freeze”

Symptom: Ein Admin führt cat access.log auf einer 5GB Datei aus. Das Terminal friert ein und wird mit Text überflutet. Die SSH-Sitzung reagiert nicht mehr. Ursache: Das Terminal versucht Millionen von Zeilen zu rendern. Lösung: Nutzen Sie immer erst tail oder less für unbekannte Dateien. Falls es doch passiert: CTRL + C hämmern oder die Sitzung von einem anderen Terminal aus killen.

# Story 2: “Das leere Log trotz Traffic”

Symptom: tail -f zeigt keine neuen Zeilen an, obwohl der Webserver arbeitet. Ursache: Das Logging der Applikation ist “buffered”. Die Daten werden erst geschrieben, wenn ein Block voll ist. Lösung: Prüfen Sie die Applikations-Einstellungen (z.B. unbuffered in Python oder flush_interval in Nginx).


# 6. Fazit & Empfehlung

  • Standard: Nutzen Sie tail -F (Groß-F) für alle Log-Dateien, die rotiert werden.
  • Kombination: Nutzen Sie head und tail zusammen, um mittlere Bereiche zu lesen: head -n 100 file | tail -n 10 (Zeigt Zeilen 91-100).
  • Wartung: Nutzen Sie wc -l in Monitoring-Skripten, um Anomalien (z.B. plötzlicher Anstieg der Log-Zeilen) zu erkennen.

# Anhang: Cheatsheet

Aufgabe Befehl
Erste n Zeilen head -n <n>
Letzte n Zeilen tail -n <n>
Live folgen tail -f
Live folgen (Persistent) tail -F
Zeilen zählen wc -l
Wörter zählen wc -w
Zeichen zählen wc -m
Mehrere Logs folgen tail -f /var/log/*.log
Byte-Zähler wc -c
Längste Zeile wc -L