Lektion 4 von 6

Dateien lesen und durchsuchen

Dateien anzeigen, lange Protokolle in Ruhe lesen, nur den Anfang oder das Ende zeigen und mit grep genau die Zeilen finden, die dich interessieren. Zum Schluss gehst du in einem Anmeldeprotokoll mit Einbruchsversuch auf Spurensuche.

  • Etwa 30 Minuten
  • 3 Übungen und 1 Knobelaufgabe im Terminal, 4 Quizfragen
  • Terminal im Browser

Dateien anzeigen

Auf einem Server ist fast alles Text: Einstellungen in /etc, Protokolle in /var/log, Skripte. Diese Befehle zeigen dir den Inhalt:

EingabeWas du siehst
cat notizen.txtDen ganzen Inhalt auf einmal. Gut für kurze Dateien.
cat -n notizen.txtDasselbe mit Zeilennummern.
less /var/log/syslogLange Dateien zum Blättern: Leertaste weiter, b zurück, /wort sucht, q beendet. Im Übungs-Terminal erscheint der Inhalt direkt.
head dateiDie ersten 10 Zeilen. Mit -n 3 nur die ersten 3.
tail dateiDie letzten 10 Zeilen. Mit -n 5 nur die letzten 5.

Für Administratoren ist tail besonders wichtig: In Protokolldateien steht das Neueste immer unten. Wenn ein Dienst gerade abgestürzt ist, zeigt tail /var/log/syslog sofort, was zuletzt passiert ist. Und tail -f (follow) bleibt offen und zeigt jede neue Zeile, sobald sie dazukommt, bis du Strg+C drückst. So schaust du einem Dienst in Echtzeit bei der Arbeit zu.

Eine Zeile aus /var/log/syslog ist meist so aufgebaut: Zeitpunkt, Name des Rechners, Programm mit Prozessnummer in eckigen Klammern, dann die Meldung.

2026-10-01T05:00:00.105200+00:00 lernarena backup.sh[1922]: ERROR: Ziel /mnt/backup nicht erreichbar
azubi@lernarena: ~
Willkommen im Übungs-Terminal von Lernarena. Probier: cat notizen.txt, tail /var/log/syslog, grep Failed /var/log/auth.log

Enter führt aus, Tab ergänzt Namen, Pfeil hoch holt frühere Befehle, Bild hoch blättert zurück. Esc und dann Tab verlässt das Terminal.

Übung 4.1

Zeige notizen.txt mit Zeilennummern an. Lass dir danach die letzten 5 Zeilen von /var/log/syslog anzeigen.

azubi@lernarena: ~

Enter führt aus, Tab ergänzt Namen, Pfeil hoch holt frühere Befehle, Bild hoch blättert zurück. Esc und dann Tab verlässt das Terminal.

Ziele

  • Zeige notizen.txt mit Zeilennummern an (offen)
  • Zeige die letzten 5 Zeilen von /var/log/syslog (offen)

Musterlösung anzeigen
cat -n notizen.txt
tail -n 5 /var/log/syslog

Ein möglicher Weg. Andere Wege sind genauso richtig, geprüft wird nur das Ergebnis. Statt tail -n 5 geht auch die Kurzform tail -5.

Suchen mit grep

Protokolle haben schnell Tausende Zeilen. grep zeigt nur die Zeilen, in denen ein Suchwort vorkommt. Erst kommt das Suchwort, dann die Datei:

azubi@lernarena:~$ grep ERROR /var/log/syslog
2026-10-01T05:00:00.105200+00:00 lernarena backup.sh[1922]: ERROR: Ziel /mnt/backup nicht erreichbar

Das Suchwort wird im Terminal rot hervorgehoben. Die Zeit sieht bei dir anders aus, weil sie immer aktuell ist. Enthält das Suchwort Leerzeichen, gehört es in Anführungszeichen: grep "Failed password" /var/log/auth.log. Diese Optionen brauchst du am häufigsten:

OptionWirkung
-iGroß- und Kleinschreibung egal: findet error, Error und ERROR (ignore case).
-nZeilennummer vor jedem Treffer.
-cNur zählen, wie viele Zeilen passen (count).
-vUmgekehrt: nur die Zeilen, die das Wort NICHT enthalten.
-rAlle Dateien in einem Ordner und seinen Unterordnern durchsuchen (rekursiv). Vor jedem Treffer steht dann der Dateiname.

Optionen lassen sich wie bei ls zusammenfassen: grep -in error ist dasselbe wie grep -i -n error.

Übung 4.2

In /var/log/auth.log protokolliert der Server jede Anmeldung. Zeige alle Zeilen, in denen Failed vorkommt, also alle fehlgeschlagenen Anmeldungen. Lass grep danach mit -c zählen, wie viele es sind.

azubi@lernarena: ~

Enter führt aus, Tab ergänzt Namen, Pfeil hoch holt frühere Befehle, Bild hoch blättert zurück. Esc und dann Tab verlässt das Terminal.

Ziele

  • Zeige alle Zeilen aus /var/log/auth.log, in denen Failed vorkommt (offen)
  • Lass grep zählen, wie viele Zeilen das sind (offen)

Musterlösung anzeigen
grep Failed /var/log/auth.log
grep -c Failed /var/log/auth.log

Ein möglicher Weg. Andere Wege sind genauso richtig, geprüft wird nur das Ergebnis. grep unterscheidet Groß- und Kleinschreibung: grep failed findet hier nichts.

Übung 4.3

Suche in /var/log/syslog nach error, egal ob groß oder klein geschrieben, und lass dir die Zeilennummern zeigen. Finde danach mit grep -r alle Zeilen mit TODO in allen Dateien unter projekte.

azubi@lernarena: ~

Enter führt aus, Tab ergänzt Namen, Pfeil hoch holt frühere Befehle, Bild hoch blättert zurück. Esc und dann Tab verlässt das Terminal.

Ziele

  • Suche in /var/log/syslog nach error, egal ob groß oder klein geschrieben, mit Zeilennummern (offen)
  • Finde alle TODO-Notizen in allen Dateien unter projekte (offen)

Musterlösung anzeigen
grep -in error /var/log/syslog
grep -r TODO projekte

Ein möglicher Weg. Andere Wege sind genauso richtig, geprüft wird nur das Ergebnis. Ohne -i fehlt die Zeile mit ERROR. Bei -r steht vor jedem Treffer die Datei, in der er steht.

Zum Knobeln 4.4

Diese Aufgabe ist freiwillig, hier steht nicht genau, wie es geht. Jemand versucht, sich von außen auf dem Server anzumelden. Finde in /var/log/auth.log die fremde IP-Adresse, von der die meisten Fehlversuche kommen. Zähle dann mit grep, wie viele Fehlversuche von genau dieser Adresse kamen.

azubi@lernarena: ~

Enter führt aus, Tab ergänzt Namen, Pfeil hoch holt frühere Befehle, Bild hoch blättert zurück. Esc und dann Tab verlässt das Terminal.

Ziele

  • Finde die fremde IP-Adresse, von der die meisten Fehlversuche kommen (offen)
  • Zähle mit grep, wie viele Fehlversuche von dieser Adresse kamen (offen)

Musterlösung anzeigen
grep Failed /var/log/auth.log
grep -c "from 203.0.113.45" /var/log/auth.log

Ein möglicher Weg. Andere Wege sind genauso richtig, geprüft wird nur das Ergebnis. Es sind 9 Versuche mit den Benutzernamen root, admin und oracle. Mit nur grep -c 203.0.113.45 kommen 10 heraus, weil die Adresse auch in der Zeile steht, in der der Server die Verbindung trennt. Lies deshalb immer nach, was du zählst. In Lektion 6 lernst du, wie du solche Ranglisten automatisch erstellst.

Wo welche Protokolle liegen

DateiWas darin steht
/var/log/syslogAllgemeine Meldungen des Systems und vieler Dienste.
/var/log/auth.logAnmeldungen, fehlgeschlagene Passwörter und jede Nutzung von sudo.
/var/log/nginx/Zugriffe und Fehler des Webservers nginx (bei Apache: /var/log/apache2/).

Die Protokolle gehören dem Benutzer syslog, der sie schreibt, und der Gruppe adm. Lesen darf, wer in dieser Gruppe ist. Unter Ubuntu ist das der Benutzer, der bei der Installation angelegt wurde, hier also azubi. Andere brauchen sudo, dazu mehr in Lektion 5. Zusätzlich sammelt systemd alle Meldungen in seinem Journal, das du mit journalctl liest. Manche Systeme schreiben nur noch dorthin. Das Übungs-Terminal kennt nur die Dateien.

Unter Windows

Jetzt selbst testen

Vier Fragen zum Abschluss. Du hast so viele Versuche, wie du willst.

1 / 4

Ein Dienst ist gerade abgestürzt. Welcher Befehl zeigt dir am schnellsten die neuesten Meldungen?

2 / 4

Was gibt grep -c Failed /var/log/auth.log aus?

3 / 4

grep error /var/log/syslog findet die Zeile mit ERROR nicht. Woran liegt das?

4 / 4

Wie beendest du tail -f, wenn du genug gesehen hast?