In diesem Handbuch beschreibe ich, wie man Systemd-Protokolle unter Linux mit verschiedenen Befehlszeilendienstprogrammen anzeigt.
Notiz: Die in diesem Handbuch erwähnten Befehle werden unter Ubuntu ausgeführt. Sie funktionieren fehlerfrei auf allen Linux-Distributionen, die mit dem Systemd-Init-System ausgestattet sind.
Methoden zum Anzeigen von systemctl-Protokollen
Es gibt zwei Ansätze zum Anzeigen von Systemd-Protokollen unter Linux:
systemctl liefert die neuesten dienstspezifischen Protokolle, während journalistctl detaillierte systemweite Protokolle aller Dienste und des spezifischen Dienstes bereitstellt.
Ich werde beide Dienstprogramme untersuchen, um Systemd-Protokolle anzuzeigen. Aber lassen Sie uns zunächst den Hauptunterschied zwischen den Befehlen systemctl und journalistctl verstehen.
Was ist systemctl
Systemctl ist ein Befehlszeilendienstprogramm, das Systemd-Dienste verwaltet, z. B. das Aktivieren oder Deaktivieren des Dienstes und das Anzeigen des Status. Der systemctl-Status Der Befehl gibt außerdem am Ende der Ausgabe einige Protokollzeilen des Dienstes aus, und dieses Protokoll folgt dem letzten Start. Diese Protokollzeilen des Dienstes stammen jedoch nur aus der Zeit nach dem aktuellen Start.
Was ist Journalctl?
Das Journalctl ist ein Befehlszeilendienstprogramm, das zum Drucken der von systemd gesammelten Protokolle verwendet wird. Im Vergleich zu systemctl bietet es eine detaillierte Ausgabe mit Filteroptionen. Dieses Dienstprogramm dient dazu:
- Protokolle lesen (Ältestes Protokoll kommt zuerst)
- Überwachen Sie Protokolle
- Filtern Sie Protokolle nach Zeit, Dienst oder Benutzer
Der systemd sammelt Protokolle von Kernel, Diensten und Daemons und speichert sie an einem zentralen Ort.
So zeigen Sie das Protokoll eines Dienstes mit systemctl an
Die allgemeine Syntax zum Suchen des Protokolls eines Dienstes mithilfe von systemctl Das Dienstprogramm wird unten erwähnt.
systemctl-Status [ Dienstname ]Um beispielsweise die Protokollinformationen des anzuzeigen smbd.service Verwenden Sie den unten angegebenen Befehl.
systemctl-Status smbd.service
Um eine Ausgabe ohne Paginierung zu erhalten, fügen Sie Folgendes hinzu –kein Pager Option im Befehl.
systemctl-Status smbd.service --no-pager
So zeigen Sie das Protokoll eines Dienstes mit „journalctl“ an
Um das Protokoll eines bestimmten Dienstes von systemd anzuzeigen, verwenden Sie Journalctl mit dem -In Befehls- und Dienst- oder Einheitenname.
Journalctl -In [ Dienstname ]Im obigen Befehl ist die -In Flagge, Kurzform für -Einheit wird zum Filtern verwendet Journalctl Ausgabe durch einen Einheitennamen.
Zum Beispiel, um das Protokoll der auszudrucken smd Daemon, ich werde den ersetzen [Einheitenname] mit smbd.service .
Journalctl -In smbd.service
In der Ausgabe ist zu sehen, dass der älteste Eintrag zuerst kommt und dann nach jedem Start protokolliert wird.
Um den neuesten Eintrag zu erhalten, verwenden Sie zuerst -Es ist kurz für –Pager-Ende.
Journalctl -In smbd.service -Es ist
Wenn Sie die Paginierung in der Ausgabe weglassen möchten, hängen Sie einfach an –kein Pager in den oben genannten Befehlen.
Um die Protokolleinträge kontinuierlich in Echtzeit auszudrucken -F kurz für -folgen .
Journalctl -In smbd.service -FDie Filterung kann durch die Verwendung des Flags -b, kurz für, weiter erweitert werden -Stiefel , wodurch die Protokolle basierend auf dem aktuellen Startvorgang gedruckt werden.
Journalctl -In [ Einheitenname ] -BLassen Sie uns die Protokolle ausdrucken smbd.service vom letzten Boot.
Journalctl -In smbd.service -B
Die obige Ausgabe ähnelt der Ausgabe, die wir mit erhalten systemctl-Status Befehl.
Um eine detaillierte Protokollübersicht zu erhalten, verwenden Sie die -X kurz für -Katalog Möglichkeit.
Journalctl -In smbd.service -XDadurch wird eine kurze Beschreibung des Protokolls angehängt.
Um nun Protokolle basierend auf der Zeit mit „journalctl“ zu drucken, gibt es zwei Möglichkeiten: -S kurz für -seit Und -IN kurz für -bis .
Journalctl -In [ Einheitenname ] -S „[Jahr-Monat-Tag] [Stunden:Minuten:Sekunden]“Zum Beispiel, um die Protokolle der Einheit anzuzeigen smd aus 2024:01:30 12:05:00 .
Journalctl -In smbd.service -S „2024:01:30 12:05:00“
Abschluss
Um die Systemd-Protokolle eines Dienstes anzuzeigen, gibt es zwei Hauptdienstprogramme: Journalctl und Systemctl. Das Journalctl ist speziell für die Anzeige der Protokolle von systemd konzipiert. Allerdings verfügt systemctl auch über die Möglichkeit, das Protokoll des Dienstes auszudrucken. Um das Protokoll einer Dienstnutzung auszudrucken, journalctl -u [Einheitsname] und systemctl [Einheitenname].