Wie man Journalctl verwendet, um Linux-Systemprotokolle zu lesen

Seit vielen Jahren wurden System- und Kernelprotokolle von einem Dienst namens syslogd verwaltet. Die meisten Linux-basierten Betriebssysteme haben auf systemd umgestellt, das mit einem anderen Protokolldaemon, journald, geliefert wird. Um mit diesen Protokollen zu interagieren, verwenden Sie das Dienstprogramm journalctl.
Benutzerberechtigung zum Lesen von Systemprotokollen gewähren
Nur Benutzer, die zu den Gruppen „adm“ oder „systemd-journal“ gehören, können systemd-Protokolle lesen. Distributionen wie Ubuntu fügen Sie bereits als Benutzer zur adm-Gruppe hinzu.
Öffnen Sie einen Terminal-Emulator und geben Sie den folgenden Befehl ein:
groups
Wenn Sie „adm“ oder „systemd-journal“ in der Ausgabe sehen, können Sie die restlichen Schritte in diesem Abschnitt überspringen. Andernfalls fügen Sie sich selbst zur Gruppe „adm“ hinzu.
sudo adduser $USER admSie müssen Ihre Anmeldesitzung neu starten, damit diese Änderung wirksam wird (abmelden und anmelden). Wenn Sie das aus verschiedenen Gründen nicht tun können, verwenden Sie diesen Befehl, um sich der neuen Gruppe anzumelden, ohne die grafische Sitzung neu zu starten.
newgrp admSchließen Sie das Terminalfenster nicht. Sie sind jetzt Teil der adm-Gruppe – in der Terminal-Sitzung, aber nicht in Ihrer grafischen Sitzung. Wenn Sie zu diesem Zeitpunkt ein neues Terminal öffnen, wird Ihr Benutzer nicht mehr in der adm-Gruppe angemeldet sein.
Überprüfen Sie, ob das Journal persistent ist
Die systemd-Protokolle können persistent oder flüchtig sein. Unter Ubuntu und anderen Distributionen sind sie standardmäßig persistent. In Debian 9 sind sie flüchtig, was bedeutet, dass sie nur im Arbeitsspeicher (nicht auf der Festplatte) gespeichert werden und beim Herunterfahren oder Neustart verschwinden. Geben Sie den folgenden Befehl ein.
journalctl --list-boots
Wenn hier mehrere Einträge vorhanden sind, müssen Sie nichts weiter tun. Das bedeutet, dass Journale auf der Festplatte gespeichert werden (persistent). Wenn Sie nur einen Eintrag erhalten, ist das Journal flüchtig. Ändern Sie es in persistent.
sudosed-i'/Storage/ c\Storage=persistent'/etc/systemd/journald.confWählen Sie, welchen Boot-Eintrag Journal Sie anzeigen möchten
Normalerweise möchten Sie die Protokolle für den aktuellen Boot sehen. In seltenen Fällen möchten Sie den vorherigen Boot sehen, wenn etwas schiefgelaufen ist, z. B. nach einem Systemabsturz.
Um die Protokolle für den aktuellen Boot anzuzeigen:
journalctl -b0
Für den vorherigen Boot verwenden Sie „-1“ anstelle von „0“, und für zwei Boots davor „-2“ und so weiter.
journalctl -b-1Navigieren und Suchen im Systemjournal
Nachdem Sie das Protokoll mit journalctl geöffnet haben, können Sie mit den Pfeiltasten und den Tasten PAGE UP oder PAGE DOWN durch den Text navigieren. Andere nützliche Tasten sind:
um zum Ende der Ausgabe zu gelangen.
- < um zum Anfang der Ausgabe zu gelangen.
- / um nach einer Textzeichenfolge zu suchen. Nachdem Sie die Schrägstrich-Taste gedrückt haben, geben Sie die Zeichenfolge ein, die Sie finden möchten, gefolgt von Enter. Die Suche ist nicht groß-/kleinschreibungsempfindlich, daher findet „network“ keine „Network“-Zeichenfolgen. Die Suche beginnt von Ihrer aktuellen Ansicht nach unten. Um nach oben zu suchen, verwenden Sie ?.
- n findet die nächste Übereinstimmung in einer aktuellen Suche. N findet die vorherige.
- q beendet das Dienstprogramm journalctl.

Protokolleinträge nach Priorität filtern
Manchmal möchten Sie nur nach Fehlern suchen und Benachrichtigungen und Statusmeldungen ignorieren. Jeder Eintrag in einem Protokoll hat eine Priorität: Notfall, Alarm, kritisch, Fehler, Warnung, Hinweis, Info. Diese sind in der Reihenfolge ihrer Wichtigkeit aufgeführt, wobei Notfälle für die schlimmsten Szenarien (System unbrauchbar) reserviert sind. Infomeldungen sind lediglich Informationstexte, die über den Status von Programmen berichten, die normal funktionieren.
Um nur Fehlermeldungen aus dem aktuellen Boot anzuzeigen, geben Sie ein:
journalctl -b0-p err
Wenn Sie Fehler aus allen Boots sehen möchten, entfernen Sie einfach den Parameter „-b“:
journalctl -p errDies sind die Codes, die Sie an den Parameter „-p“ übergeben können:
- alert
- crit
- debug
- emerg
- err
- info
- notice
- warning
Protokolleinträge nach Pfad zur ausführbaren Datei oder Systemd-Einheit filtern
Einige Prozesse werden von sogenannten systemd-Einheiten gestartet und verwaltet. Um alle Protokolle im Zusammenhang mit der Cron-Diensteinheit anzuzeigen, geben Sie ein:
journalctl -u cron.serviceSie können sehen, welche Einheiten Ihnen zur Verfügung stehen mit:
systemctl list-dependencies
Sie können durch die Liste mit den Pfeiltasten nach oben und unten navigieren. Drücken Sie q, um zu beenden.
Wenn Sie lieber den Pfad zur ausführbaren Datei (Binärdatei) des Programms verwenden möchten, übergeben Sie einfach den vollständigen Pfad als Argument.
journalctl /usr/sbin/cronVergessen Sie nicht, dass Sie auch nach dem aktuellen Boot-Eintrag filtern können, um unnötige Nachrichten zu vermeiden.
journalctl -b0/usr/sbin/cronFazit
Journalctl hat das Ziel, es einfach zu machen, das zu finden, wonach Sie suchen. Wenn Sie mehr über erweiterte Parameter erfahren möchten, die Sie verwenden können, konsultieren Sie die Handbuchseite zum Befehl journalctl.