Zum Inhalt

Fehlerdiagnose und Systemprotokolle

Wenn ein Dienst nicht startet oder eine Anwendung Fehler meldet, helfen Dir die Systemprotokolle bei der Suche nach der Ursache. Auf vielen Linux-Systemen sammelt systemd-journald Meldungen des Kernels, von Systemdiensten und von Anwendungen, die an das Journal angebunden sind. Mit journalctl kannst Du diese Meldungen anzeigen und filtern.

Meldungen gezielt anzeigen

Die folgenden Befehle lesen das Journal, ohne seine Einträge zu verändern. Welche Meldungen Du sehen darfst, hängt von Deinen Benutzerrechten ab. Verwende bei Bedarf sudo journalctl …, um auch geschützte Systemmeldungen anzuzeigen.

Befehl Bedeutung
journalctl Zeigt alle gespeicherten und für Dich zugänglichen Journal-Einträge an
journalctl -b Zeigt Meldungen des aktuellen Systemstarts
journalctl --list-boots Listet die im Journal verfügbaren Systemstarts auf
journalctl -b -1 Zeigt Meldungen des vorherigen Systemstarts, sofern sie noch gespeichert sind
journalctl -u apache2.service Filtert Meldungen für den angegebenen Dienst
journalctl -k -b Zeigt Kernelmeldungen des aktuellen Systemstarts
journalctl -p err -b Zeigt Fehler und schwerwiegendere Meldungen des aktuellen Systemstarts
journalctl --since "1 hour ago" Zeigt Meldungen aus der letzten Stunde
journalctl --since "2026-11-01 08:00:00" --until "2026-11-01 09:00:00" Begrenzt die Ausgabe auf einen bestimmten Zeitraum; Datum und Uhrzeit entsprechend anpassen
journalctl -n 50 Zeigt die letzten 50 Einträge
journalctl -f Zeigt die neuesten Einträge und anschließend neu eintreffende Meldungen; Beenden mit Strg+C
journalctl --disk-usage Zeigt den Speicherverbrauch der aktiven und archivierten Journal-Dateien

Ersetze apache2.service durch den tatsächlichen Namen Deines Dienstes. Dieser kann je nach Distribution abweichen, beispielsweise httpd.service für Apache. In der seitenweisen Anzeige kannst Du mit /Suchbegriff suchen und mit q zur Shell zurückkehren.

Prioritätsstufen verstehen

Eine kleinere Zahl bezeichnet eine schwerwiegendere Meldung. Ein einzelner Wert bei -p schließt alle höheren Schweregrade ein: journalctl -p 3 zeigt somit die Stufen 0 bis 3, nicht ausschließlich Stufe 3. Mit -p 3..3 begrenzt Du die Ausgabe auf genau diese Stufe.

Stufe Bezeichnung Bedeutung
0 emerg System nicht benutzbar
1 alert Sofortiges Eingreifen erforderlich
2 crit Kritischer Zustand
3 err Fehler
4 warning Warnung
5 notice Normales, aber bedeutsames Ereignis
6 info Allgemeine Information
7 debug Ausführliche Diagnoseinformation

Einen Dienst untersuchen

Am Beispiel von Apache kannst Du zunächst den Zustand und anschließend die zugehörigen Meldungen prüfen:

systemctl status apache2.service
sudo journalctl -u apache2.service -b -n 50

Wenn Du einen Fehler gezielt nachstellst, kannst Du die Meldungen parallel verfolgen:

sudo journalctl -u apache2.service -f

Achte auf den Zeitpunkt des Fehlers und lies auch die unmittelbar vorhergehenden Meldungen. Ein fehlgeschlagener Dienst kann beispielsweise auf eine ungültige Konfiguration, fehlende Berechtigungen oder eine nicht erreichbare Abhängigkeit hinweisen. Ein Filter nur auf Fehlerprioritäten kann hilfreichen Kontext ausblenden.

Speicherung und Aufbewahrung

Das Journal verwendet ein binäres Format. Zum Lesen nutzt Du journalctl statt cat. Die Einträge können unter anderem Zeitstempel, Priorität, Dienstzuordnung und Meldungstext enthalten.

Ob Protokolle einen Neustart überstehen, hängt von der Einstellung Storage= in der journald-Konfiguration ab:

Einstellung Verhalten
persistent Speicherung vorzugsweise unter /var/log/journal/; vorübergehender Rückgriff auf /run/log/journal/ möglich
volatile Speicherung unter /run/log/journal/; die Einträge gehen beim Neustart verloren
auto Dauerhafte Speicherung, wenn /var/log/journal/ vorhanden ist; andernfalls flüchtige Speicherung
none Keine Speicherung im Journal; Weiterleitung an andere Ziele kann weiterhin stattfinden

Die Konfiguration kann aus /etc/systemd/journald.conf und ergänzenden Konfigurationsdateien stammen. Größen- und Aufbewahrungsgrenzen bestimmen zusätzlich, wie lange Einträge verfügbar bleiben. Deshalb kannst Du nicht auf jedem System frühere Systemstarts oder beliebig alte Meldungen abrufen.

Rotation und Speicherbereinigung unterscheiden

Rotation schließt aktive Journal-Dateien ab und markiert sie als archiviert. Neue Meldungen werden anschließend in neue Dateien geschrieben. Sie löscht allein keine alten Einträge:

sudo journalctl --rotate

Bereinigung entfernt archivierte Journal-Dateien nach den angegebenen Grenzen. Das folgende Beispiel löscht archivierte Dateien, die älter als sieben Tage sind:

sudo journalctl --vacuum-time=7d

Die Bereinigung entfernt gespeicherte Diagnoseinformationen unwiderruflich. Sichere benötigte Meldungen vorher. Die Altersgrenze wird auf ganze archivierte Dateien angewendet, nicht auf einzelne Meldungen.

Eine Größenbegrenzung lässt sich beispielsweise so anwenden:

sudo journalctl --vacuum-size=500M

Dabei werden archivierte Dateien entfernt, bis die Größenbedingung erfüllt ist oder keine weiteren archivierten Dateien mehr entfernt werden können. Aktive Dateien werden mitgezählt, wenn Du --disk-usage abfragst, aber durch die Bereinigung nicht gelöscht. Der gesamte Journal-Verbrauch kann daher weiterhin über dem angegebenen Wert liegen. Eine vorherige Rotation kann zusätzliche Dateien für die Bereinigung verfügbar machen.

Weitere Einzelheiten findest Du im journalctl-Handbuch und in der Dokumentation zur journald-Konfiguration.