Journalctl

Aus Foxwiki

journalctl - Abfragen des Systemd-Journals

Syntax

journalctl [OPTIONEN…] [ÜBEREINSTIMMUNGEN…]

Anwendungen

Ohne Argumente

alle gesammelten Protokolle ungefiltert angezeigen

journalctl

Systemd-Unit angeben

journalctl -u apache2.service

Treffer angeben

Einträge, bei denen ein Feld auf den Ausdruck passt, anzeigen

journalctl _SYSTEMD_UNIT=avahi-daemon.service
journalctl _SYSTEMD_CGROUP=/user.slice/user-42.slice/session-c1.scope

Felder vergleichen

Falls zwei verschiedene Felder verglichen werden, werden nur Einträge, die auf beide Ausdrücke gleichzeitig passen, angezeigt:

journalctl _SYSTEMD_UNIT=avahi-daemon.service _PID=28097

Falls sich zwei Treffer auf das gleiche Feld beziehen, werden alle Einträge, die auf einer der zwei Ausdrücke passen, angezeigt:

journalctl _SYSTEMD_UNIT=avahi-daemon.service _SYSTEMD_UNIT=dbus.service

Falls der Trenner »+« verwandt wird, können zwei Ausdrücke mit einem logischen ODER verbunden werden.

Folgendes Beispiel wird alle Nachrichten vom Avahi-Diensteprozess mit der PID 28097 sowie alle Nachrichten vom D-Bus-Dienst (von einem beliebigen Prozess) anzeigen:

journalctl _SYSTEMD_UNIT=avahi-daemon.service _PID=28097 + _SYSTEMD_UNIT=dbus.service

Um alle Felder, die von und über die Unit ausgegeben werden, anzuzeigen, sollte die Option -u/--unit= verwandt werden.

journalctl -u name expandiert zu einem komplexen Filter ähnlich zu

   _SYSTEMD_UNIT=Name.service
     + UNIT=Name.service _PID=1
     + OBJECT_SYSTEMD_UNIT=Name.service _UID=0
     + COREDUMP_UNIT=Name.service _UID=0 MESSAGE_ID=fc2e22bc6ee647b6b90729ab34a250b1

(siehe systemd.journal-fields(5) für eine Erklärung dieser Muster).

Zeigt alle Protokolle, die vom D-Bus-Programm erzeugt wurden:

   journalctl /usr/bin/dbus-daemon

Zeigt alle Kernelprotokolle vom vorherigen Systemstart:

   journalctl -k -b -1

Zeigt eine Live-Protokollanzeige von einem Systemdienst apache.service:

   journalctl -f -u apache

Beschreibung

  • journalctl kann zur Abfrage der Inhalte des Journals von systemd(1) wie von systemd-journald.service(8) geschrieben benutzt werden.
  • Beim Aufruf ohne Parameter wird der gesamte Inhalt des Journals angezeigt, beginnend mit dem ältesten gesammelten Eintrag.
  • Falls ein oder mehrere Übereinstimmungsparameter übergeben werden, wird die Ausgabe entsprechend gefiltert.
    • Eine Übereinstimmung ist in der Form »FELD=Wert«, z.B. »_SYSTEMD_UNIT=httpd.service«, was sich auf strukturierte Journal-Einträge bezieht.
    • Siehe systemd.journal-fields(7) für eine Liste von gut bekannten Feldern.
    • Falls mehrere Übereinstimmungen, die verschiedene Übereinstimmungsfelder festlegen, übergeben werden, werden die Protokolleinträge entsprechend aller Felder gefiltert, d.h. die resultierende

Ausgabe wird nur Einträge zeigen, die mit allen angegebenen Übereinstimmungen dieser Art übereinstimmen.

  • Falls zwei Übereinstimmungen auf das gleiche Feld angewandt werden, dann werden sie automatisch als Alternativen auf Übereinstimmung geprüft, d.h. die

resultierende Ausgabe wird Einträge zeigen, die mit jeder der angegebenen Übereinstimmungen für das gleiche Feld übereinstimmen.

  • Schließlich darf das Zeichen »+« als separates Wort zwischen anderen Ausdrücken auf der Befehlszeile erscheinen.
  • Dies führt dazu, dass alle Übereinstimmungen davor und danach als Disjunktion (d.h. als logisches ODER) verknüpft werden.
  • Es ist auch möglich, die Einträge durch Angabe eines absoluten Dateipfads zu filtern.
    • Der Dateipfad kann eine Datei oder ein symbolischer Link sein und die Datei muss zum Zeitpunkt der Abfrage existieren.
    • Falls sich der Dateipfad auf ein ausführbares Programm bezieht, wird eine »_EXE=«-Übereinstimmung für den kanonisierten Programmpfad zu der Abfrage hinzugefügt.
    • Falls sich ein Dateipfad auf ein ausführbares Skript bezieht, wird eine »_COMM=«-Übereinstimmung für den Skriptpfad zu der Abfrage hinzugefügt.
    • Falls ein Dateipfad sich auf einen Geräteknoten bezieht, wird eine »_KERNEL_DEVICE=«-Übereinstimmung für den Kernelnamen des Gerätes und für jeden seiner Nachkommensgeräte zu der Abfrage hinzugefügt.
  • Symbolische Links werden dereferenziert
    • Kernelnamen werden synthetisiert und Elterngeräte werden zum Zeitpunkt der Abfrage identifiziert.
    • Im Allgemeinen ist ein Geräteknoten der beste Proxy für ein tatsächliches Gerät, da Protokolleinträge normalerweise keine Felder enthalten, die tatsächliche Geräte identifizieren.
    • Damit die resultierenden Protokolleinträge für das tatsächliche Gerät korrekt sind, muss der relevante Teil der Umgebung zum Zeitpunkt der Protokollierung des Eintrags, insbesondere das dem Geräteknoten entsprechende tatsächliche Gerät, identisch zum Zeitpunkt der Abfrage sein.
    • Da Geräteknoten im Allgemeinen nach Systemneustarts ihre entsprechenden Geräte ändern, führt die Angabe von Geräteknotenpfaden dazu, dass die resultierenden Einträge auf solche des aktuellen Systemstarts begrenzt sind.

Mit den Optionen --boot, --unit= usw. können zusätzliche Einschränkungen hinzugefügt werden, um weiter einzuschränken, welche Einträge angezeigt werden (logisches UND).

Die Ausgabe wird aus allen zugreifbaren Quellen verschachtelt, unabhängig davon, ob sie rotiert oder momentan geschrieben werden und unabhängig davon, ob sie zu dem System selbst gehören oder zugreifbare Benutzer-Journale sind.

Die Gruppe der verwandten Journal-Dateien kann mit den Optionen --user, --system, --directory und --file verändert werden, siehe unten.

Allen Benutzern wird Zugriff auf ihre privaten benutzerbezogenen Journale gewährt. Standardmäßig wird allerdings nur Root und Benutzern, die Mitglied ein paar besonderer Gruppen sind, der Zugriff auf das System-Journal und die Journale der anderen Benutzer gewährt. Mitglieder der Gruppen »systemd-journal«, »adm« und »wheel« können alle Journal-Dateien lesen. Beachten Sie, dass die zwei letzten Gruppen traditionell über zusätzliche, von der Distribution festgelegte Privilegien verfügen. Mitglieder der Gruppe »wheel« können oft zusätzliche administrative Aufgaben durchführen.

Die Ausgabe wird standardmäßig seitenweise durch less geleitet und lange Zeilen werden auf Bildschirmbreite »abgeschnitten«. Der versteckte Anteil kann mittels der Pfeil-links- und Pfeil-rechts-Tasten betrachtet werden. Seitenweise Anzeige kann deaktiviert werden; siehe die Option --no-pager und den Abschnitt »Umgebungsvariablen« unten.

Erfolgt die Ausgabe auf ein TTY, werden die Zeilen entsprechend der Priorität eingefärbt: Zeilen der Stufe ERROR und höher werden rot eingefärbt; Zeilen der Stufe NOTICE und höher werden hervorgehoben; Zeilen der Stufe DEBUG werden in leichtem Grau eingefärbt; andere Zeilen werden normal dargestellt.

EXIT-STATUS

Im Erfolgsfall wird 0 zurückgeliefert; andernfalls wird ein von Null verschiedener Code zurückgeliefert.

Umgebungsvariablen

$SYSTEMD_PAGER

   Zu verwendendes Textanzeigeprogramm, wenn --no-pager nicht angegeben ist; setzt $PAGER außer Kraft. Falls weder $SYSTEMD_PAGER noch $PAGER gesetzt sind, wird eine Reihe wohlbekannter Textanzeigeprogrammimplementierungen der Reihe nach ausprobiert,
   einschließlich less(1) und more(1), bis eines gefunden wird. Falls keine Textanzeigeprogrammimplementierung gefunden wird, wird keines aufgerufen. Setzen der Umgebungsvariablen auf die leere Zeichenkette oder den Wert »cat« ist äquivalent zur Übergabe
   von --no-pager.

$SYSTEMD_LESS

   Setzt die an less übergebenen Optionen (standardmäßig »FRSXMK«) außer Kraft.
   Benutzer könnten insbesondere zwei Optionen ändern wollen:
   K
Diese Option weist das Textanzeigeprogramm an, sich sofort beim Druck von Strg-C zu beenden. Um less die Handhabung von Strg-C selbst zum Umschalten auf die Eingabeaufforderung zu erlauben, setzen Sie diese Option zurück.
Falls der Wert von $SYSTEMD_LESS kein »K« enthält und less das aufgerufene Textanzeigeprogramm ist, wird Strg+C durch das Programm ignoriert und muss durch das Textanzeigeprogramm selbst gehandhabt werden.
   X
Diese Option weist das Textanzeigeprogramm an, keine Termcap-Initialisierungs- und -Deinitalisierungszeichenketten an das Terminal zu senden. Dies ist standardmäßig gesetzt, damit die Darstellung von Befehlen selbst nach dem Beenden des
Textanzeigeprogramms sichtbar bleibt. Allerdings stehen dadurch einige Funktionen des Textanzeigeprogramms nicht zur Verfügung; insbesondere ist das Scrollen in der Ausgabe mit der Maus nicht möglich.
   Siehe less(1) für weitere Ausführungen.

$SYSTEMD_LESSCHARSET

   Setzt den an less zu übergebenden Zeichensatz (standardmäßig »utf-8«, falls das aufrufende Terminal als UTF-8-kompatibel erkannt wurde) außer Kraft.

$SYSTEMD_COLORS

   Dies muss ein logischer Wert sein. Er steuert, ob farbige Ausgabe erstellt werden soll. Dies kann angegeben werden, um die Entscheidung, die systemd basierend auf $TERM und der Art der angebundenen Konsole trifft, außer Kraft zu setzen.

$SYSTEMD_URLIFY

   Dies muss ein logischer Wert sein. Er steuert, ob anklickbare Links für Terminal-Emulatoren, die dies unterstützen, erstellt werden sollen. Dies kann angegeben werden, um die Entscheidung, die systemd basierend auf $TERM und anderen Bedingungen trifft,
   außer Kraft zu setzen.

Links

Man-Pages

  1. systemd(1)
  2. systemd-journald.service(8)
  3. systemctl(1)
  4. coredumpctl(1)
  5. systemd.journal-fields(7)
  6. journald.conf(5)
  7. systemd.time(7)
  8. systemd-journal-remote.service(8)
  9. systemd-journal-upload.service(8)

Anmerkungen

  1. Journal-Exportformat (https://www.freedesktop.org/wiki/Software/systemd/export)
  2. Journal-JSON-Format (https://www.freedesktop.org/wiki/Software/systemd/json)
  3. Server-gesandte Ereignisse (https://developer.mozilla.org/de/docs/Web/API/Server-sent_events/Using_server-sent_events)
  4. JavaScript-Objektnotation (JSON) Textsequenzen (https://tools.ietf.org/html/rfc7464)
  5. Entwicklerdokumentation für den Nachrichtenkatalog (https://www.freedesktop.org/wiki/Software/systemd/catalog)