↓ Zum Hauptinhalt springen
  1. Lernen/
  2. Linux/

journalctl und Linux-Logs: Die wichtigsten Befehle zur Fehlersuche

Patrick Adams
Autor
Patrick Adams
Linux-Administrator und IT-Specialist. Ich schreibe über Server, Self-Hosting und Open-Source-Software, praxisnah und selbst getestet. Mehr über mich →
Inhaltsverzeichnis
Wenn unter Linux ein Dienst nicht startet oder der Server sich seltsam verhält, steht die Ursache fast immer irgendwo in den Logs. Man muss nur wissen, wo man suchen soll.

So gehe ich bei der Fehlersuche vor
#

Bevor es um einzelne Befehle geht, hier die Reihenfolge, die sich bei mir bewährt hat:

  1. Status prüfen: Mit systemctl status dienstname siehst du, ob der Dienst läuft, und bekommst gleich die letzten Logzeilen dazu.
  2. Logs des Dienstes lesen: Mit journalctl -u dienstname -n 50 schaust du dir die letzten 50 Einträge genauer an.
  3. Nach Fehlern filtern: Mit journalctl -p err -b findest du alle Fehler seit dem letzten Start, auch die von anderen Diensten.
  4. Hardware ausschließen: Mit dmesg -T --level=err,warn prüfst du, ob Festplatten, Arbeitsspeicher oder Treiber Probleme melden.

In den meisten Fällen hast du die Ursache spätestens nach Schritt 3 gefunden.

Dienste prüfen mit systemctl
#

BefehlBeschreibung
systemctl status nginxZeigt den Zustand eines Dienstes und die letzten Logzeilen.
systemctl --failedListet alle Dienste auf, die nicht starten konnten.
systemctl list-units --type=service --state=runningZeigt alle laufenden Dienste.

Logs lesen mit journalctl
#

Grundlagen
#

BefehlBeschreibung
journalctlZeigt das komplette Journal, die ältesten Einträge zuerst.
journalctl -eSpringt direkt ans Ende, also zu den neuesten Einträgen.
journalctl -n 50Zeigt nur die letzten 50 Einträge.
journalctl -fZeigt neue Einträge live an. Beenden mit Strg+C.
journalctl -xeZeigt die neuesten Einträge mit zusätzlichen Erklärungen.

Nach Dienst filtern
#

BefehlBeschreibung
journalctl -u nginxZeigt nur die Logs eines bestimmten Dienstes.
journalctl -u nginx -fVerfolgt die Logs eines Dienstes live.
journalctl -u nginx -u php8.2-fpmZeigt die Logs mehrerer Dienste zusammen.
journalctl _PID=1234Zeigt die Einträge eines bestimmten Prozesses.

Nach Zeit filtern
#

BefehlBeschreibung
journalctl --since "1 hour ago"Zeigt alle Einträge der letzten Stunde.
journalctl --since todayZeigt alle Einträge von heute.
journalctl --since "2026-11-01 08:00" --until "2026-11-01 12:00"Zeigt einen bestimmten Zeitraum.

Nach Systemstart filtern
#

BefehlBeschreibung
journalctl -bZeigt alle Einträge seit dem letzten Start.
journalctl -b -1Zeigt die Einträge des vorherigen Starts. Ideal, wenn der Server abgestürzt ist.
journalctl --list-bootsListet alle gespeicherten Systemstarts auf.

Nach Wichtigkeit filtern
#

BefehlBeschreibung
journalctl -p errZeigt nur Fehler und alles, was noch schlimmer ist.
journalctl -p warning -bZeigt Warnungen und Fehler seit dem letzten Start.
journalctl -kZeigt nur Meldungen des Kernels.

Die Stufen reichen von emerg über alert, crit, err, warning, notice und info bis debug. Wenn du eine Stufe angibst, siehst du sie und alle wichtigeren.

Nach Text suchen
#

Mit -g durchsuchst du das Journal direkt nach einem Begriff:

journalctl -u nginx -g "error"

Alternativ geht es auch klassisch mit grep:

journalctl -u nginx --no-pager | grep -i error

Journal verwalten
#

BefehlBeschreibung
journalctl --disk-usageZeigt, wie viel Speicherplatz das Journal belegt.
journalctl --vacuum-time=2weeksLöscht alle Einträge, die älter als zwei Wochen sind.
journalctl --vacuum-size=500MVerkleinert das Journal auf höchstens 500 MB.

Funktioniert journalctl -b -1 bei dir nicht, speichert dein System das Journal nur im Arbeitsspeicher, und nach einem Neustart ist alles weg. Mit diesen zwei Befehlen machst du es dauerhaft:

mkdir -p /var/log/journal && systemctl restart systemd-journald

Kernel-Meldungen mit dmesg
#

BefehlBeschreibung
dmesg -TZeigt die Kernel-Meldungen mit lesbarer Uhrzeit.
dmesg -T --level=err,warnZeigt nur Fehler und Warnungen.
dmesg -wZeigt neue Meldungen live an, zum Beispiel beim Einstecken einer Festplatte.

Klassische Logdateien
#

Viele Programme schreiben zusätzlich eigene Logdateien nach /var/log:

DateiInhalt
/var/log/syslogAllgemeine Systemmeldungen, falls rsyslog installiert ist.
/var/log/auth.logAnmeldungen, sudo und SSH-Zugriffe.
/var/log/apt/history.logWelche Pakete wann installiert oder aktualisiert wurden.
/var/log/nginx/error.logFehler des Webservers Nginx.

Neuere Debian-Versionen installieren rsyslog nicht mehr standardmäßig. Dann gibt es keine syslog und keine auth.log, und alles landet nur im Journal.

So liest du die Dateien am besten:

tail -n 50 /var/log/nginx/error.log
tail -f /var/log/nginx/error.log
grep -i "failed" /var/log/auth.log

Der erste Befehl zeigt die letzten 50 Zeilen, der zweite verfolgt neue Einträge live, und der dritte sucht nach fehlgeschlagenen Anmeldungen.

Läuft dein Dienst in einem Container, findest du die passenden Befehle in meiner Übersicht der Docker-Befehle.

Verwandte Artikel