ubuntuusers.de

journalctl

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Wiki/Icons/terminal.png systemd verwendet standardmäßig ein zentrales Protokoll bzw. Journal, in das von journald alle Logmeldungen geschrieben werden. Zur Abfrage des Journals dient der Kommandozeilen-Befehl journalctl.

Installation

Da systemd ab Ubuntu 15.04 integraler Bestandteil des Systems ist (und dieses ohne systemd nicht lauffähig ist), sind alle benötigten Komponenten bereits installiert.

Benutzung

Die allgemeine Syntax von journalctl lautet[1]:

journalctl [OPTIONEN] 

Sind mehrere Journal-Dateien vorhanden, führt journalctl diese für die Ausgabe automatisch zusammen.

Ruft man journalctl ohne Optionen auf, so erscheinen als erstes einige Zeilen, wie groß die aktuelle Logdatei ist und wie groß diese maximal werden kann. Dann erscheinen alle Logmeldungen.

Bei der Anzeige der Logeinträge wird standardmäßig ein Pager ähnlich dem vom less verwendet, d.h. die Ausgabe hält automatisch an, wenn die maximale Zeilenanzahl des Bildschirms erreicht ist. Mit der Leertaste          blättert man eine Seite weiter, mit oder zeilenweise zurück oder vor.

Möchte man journalctl beenden, so drückt man einfach Strg + C .

Außerdem wird die Ausgabe eingefärbt. So sind Logeinträge der Priorität "Error" rot, die der Priorität "Warning" und "Notice" weiß und die der niedrigen Prioritäten wie "Info" und "Debug" grau.

Jede Logzeilen hat einen Aufbau wie im Folgenden gezeigt:

Jan 16 21:28:38 RECHNERNAME NetworkManager[706]: <info>  monitoring kernel firmware directory '/lib/firmware'.

Zum Beginn der Zeile stehen Datum und Uhrzeit, gefolgt vom Rechnernamen, dem "Identifier", dem Loglevel und der Logmeldung an sich.

journalctl kennt eine Vielzahl von Optionen, um die angezeigten Logmeldungen zu filtern:

Optionen von journalctl
Option Erklärung
-e, --pager-end springt direkt ans Ende des Journals, d.h. die neuesten Einträge werden angezeigt
-r, --reverse sortiert die Logeinträge in umgekehrter Reihenfolge, d.h. die neuesten werden zuerst angezeigt
-f, --follow Springt direkt ans Ende des Journals und zeigt neue Einträge "live" an. Der Follow-Modus kann mit Strg + C verlassen werden.
-b, --boot Zeigt alle Logeinträge seit dem letzten Booten an.
--since=DATUM Zeigt alle Logeinträge ab dem Datum DATUM an. Datum hat folgendes Format "JJJJ-MM-TT HH:MM:SS", also z.B. "2016-01-17 12:00:00"
--since=yesterday Zeigt alle Logeinträge ab 00:00:00 Uhr des Vortages an.
--until=DATUM Wie --since DATUM, nur das Logeinträge bis zum Datum DATUM angezeigt werden.
-k, --dmesg zeigt nur Logmeldungen des Kernels an
-u UNITNAME, --unit UNITNAME Zeigt nur Logmeldungen der Unit UNITNAME an. Es kann ein kompletter Unitname oder ein Muster angegeben werden. So würde z.B. journalctl -u an* nur Logeinträge von Units anzeigen, deren Name mit an beginnt.
-t IDENTIFIER, --identifier IDENTIFIER Zeigt nur Logeinträge an, die den Identifier IDENTIFIER zugeordnet sind
-p PRIORITÄT, --priority PRIORITÄT Zeigt nur Logeinträge mit der Priorität PRIORITÄT an. Mögliche Werte sind: emerg, alert, crit, err, warning, notice, info und debug. Alternativ können die Prioritäten als Zahl angegeben werden. 0 entspricht emerg, 1 entspricht alert usw.
-o verbose Zeigt zu jedem Logeintrag alle verfügbaren Metadaten an. Dadurch wird die Ausgabe sehr detailliert - und sehr lang.

journalctl kennt noch eine ganze Reihe weitere Optionen. Eine vollständige Übersicht mit Erklärung über alle Optionen liefert der Aufruf von journalctl -h oder die Dokumentation 🇬🇧.

Ältere Logs abfragen

Standardmäßig wird unter Ubuntu das Journal gelöscht, wenn der Computer neu gestartet oder heruntergefahren wird. Ist das dauerhafte Speichern aktiviert, kann man sich mit journalctl auch gezielt ältere Journaldateien anzeigen lassen. Dazu dient die Option -b BOOTNUMMER bzw. --boot=BOOTNUMMER. Der neuste (=der aktuelle) Systemstart hat dabei die Nummer 0 (null), der vorherige die Nummer -1 usw.

Alle ältere Journaldateien lassen sich über den Befehl:

journalctl --list-boots 

anzeigen.

Logs benutzerabhängig abfragen

Gibt es zusätzlich zur Journal-Datei des Systems zusätzlich eine Journal-Datei pro Benutzer, kann man die Einträge der eigenen Logdatei über die Option --user abrufen.

Beispiele

Gefiltert nach Priorität

Verwendung der Option -p.

Alle Meldungen mit Kennzeichnung error, critical, alert oder emergency anzeigen:

journalctl -p err -b 

Gefiltert nach Unit

Verwendung der Option -u.

Es ist erlaubt mehrere Units gleichzeitig anzugeben:

journalctl -u home.mount -u networking.service 

Um eine Unit live zu verfolgen:

journalctl -f -u apache 

Gefiltert nach Datum

Verwendung der Optionen --since und --until.

Dabei ist die Verwendung absoluter Zeiten im YYYY-MM-DD HH:MM:SS-Format erlaubt, als auch Wörter wie yesterday, 1 hour ago etc. Eine Übersicht findet sich in der Manpage von systemd.time. Der --until-Parameter ist optional.

journalctl --since "2016-07-01" --until "2 minutes ago" 

Problembehebung

Es werden keine Logmeldungen angezeigt

Erfolgt keinerlei Ausgabe von Logmeldungen oder zeigt journalctl eine Meldung an, dass die Rechte unzureichend sind, so muss man sich bzw. den Benutzer, der die entsprechenden Rechte bekommen soll, der Gruppe systemd-journal hinzufügen [1][2]:

sudo usermod -aG systemd-journal BENUTZERNAME  

Logmeldungen mit einem Live-/Rettungssystem auslesen

Falls im fraglichen (z.B. defekten) System die persistente Speicherung für das Journal aktiviert war , können die Logs von außen mit einem Live- oder Rettungssystem mit strings und egrep ausgelesen werden. Alternativ kann man journalctl der Option -D oder --directory= den Pfad zur Journaldatei angeben. Wenn man z.B. die Festplatte eines defekten Systems unter /mnt/hd1/ eingebunden hat und dort die Logdatei an normaler Stelle liegt, sollte man dieses mit

journalctl -D /mnt/hd1/var/log/journal/UUID_DES_VERZEICHNISSES/ 

betrachten können.

  • Dokumentation 🇬🇧 des systemd-Journals

  • Erklärung 🇬🇧, welche Metadaten im systemd-Journal mit gespeichert werden

Diese Revision wurde am 17. Juni 2019 15:43 von D1V1N3 erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: systemd, System