Verwalten Sie Protokollnachrichten unter SystemD mit JournalCtl [Comprehensive Guide]
- 2785
- 179
- Lana Saumweber
Systemd ist ein modernster System- und Service-Manager für Linux-Systeme: ein Init-Dämon-Ersatz, der mit dem Systemstiefel parallel starten soll. Es wird nun in einer Reihe aktueller Mainstream -Verteilung unterstützt, darunter Fedora, Debian, Ubuntu, OpenSuse, Arch, Rhel, CentOS usw.
Früher haben wir die Geschichte hinter 'init' und 'systemd' erklärt; Wo wir diskutierten, was die beiden Dämonen sind, warum 'drin"Technisch gesehen musste ersetzt werden durch"systemdsowie die Hauptmerkmale von systemd.
Einer der Hauptvorteile von SystemD gegenüber anderen gemeinsamen Init -Systemen ist die Unterstützung des zentralisierten Managements von System- und Prozessen, die mithilfe eines Journals protokolliert werden. In diesem Artikel lernen wir, wie man Protokollnachrichten unter systemd verwaltet und anzeigen Journalctl Befehl in Linux.
Wichtig: Bevor Sie sich in diesem Handbuch weiter bewegen, möchten Sie möglicherweise lernen, wie Sie "Systemd" -Dienste und -Initen mithilfe von "SystemCTL" verwalten und neue Serviceeinheiten in systemd mit Shell -Skripten unter Linux erstellen und ausführen. Wenn Sie jedoch mit all den oben genannten in Ordnung sind, lesen Sie weiter durch.
Konfigurieren von Journald zum Sammeln von Protokollnachrichten unter Systemd
Journald ist ein Daemon, der Journaleinträge aus dem gesamten System versammelt und schreibt; Hier.
Sie können das Verhalten von kontrollieren Journald über die Standardkonfigurationsdatei: /etc/systemd/journald.Conf die zur Kompilierungszeit erzeugt wird. Diese Datei enthält Optionen, deren Werte Sie ändern können, um Ihre lokalen Umgebungsanforderungen zu erfüllen.
Im Folgenden finden Sie ein Beispiel, wie die Datei aussieht, die mit dem CAT -Befehl angezeigt wird.
$ cat/etc/systemd/journald.ConfJournald -Konfigurationsdatei
# Siehe Journald.Conf (5) für Details. [Journal] #Storage = auto #compress = yes #Seal = yes # #splitmode = uid #syncintervalsec = 5m #ratelimitInterval = 30S #ratelimitBurst = 1000 #systemMaxuse = #systemkeepfree = #systemmaxFileSize = #systemMaxFiles = 100 #runTimaxuse = # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #RuntimemaxFileSize = #runtimemaxFiles = 100 #maxretentionec = #maxFilesec = 1month #ForwardTOSYSLog = yes #tewesTOKMSG = nein # #ForwardToConsole = no # # # # #teartoWall = yes # #ttypath =/dev/console #maxlevelstore = debug #mAxlevel #maxlevel #maxlevel #maxlevel MaxLevelConsole = info #maxLevelwall = Emerg
Beachten Sie, dass verschiedene Paket -Installationen und Konfigurationsauszüge in verwenden /usr/lib/systemd/*.Conf.D/ und Laufzeitkonfigurationen finden Sie in /run/systemd/journald.Conf.D/*.Conf was Sie möglicherweise nicht unbedingt verwenden.
Aktivieren Sie die Datenspeicherung auf die Zeitschrift auf der Festplatte
Eine Reihe von Linux -Verteilungen, einschließlich Ubuntu und derenivate wie Linux Mint.
Es ist möglich, dies zu aktivieren, indem Sie die “festlegen“Lagerung”Option zu“hartnäckig" Wie nachfolgend dargestellt. Dies erstellt die /var/log/journal Verzeichnis und alle Zeitschriftendateien werden darunter gespeichert.
$ sudo vi/etc/systemd/journald.conf oder $ sudo nano/etc/systemd/journald.Conf
[Journal] Storage = persistent
Weitere Einstellungen finden Sie in der Bedeutung aller Optionen, die unter dem konfiguriert werden sollen "[Tagebuch]" Abschnitt durch Eingabe.
$ MAN Journald.Conf
Festlegen der korrekten Systemzeit mit dem Befehl Timedatectl
Stellen Sie für eine zuverlässige Protokollverwaltung unter Systemd mit Journald Service sicher, dass die Zeiteinstellungen einschließlich der Zeitzone im System korrekt sind.
Um die aktuellen Datums- und Zeiteinstellungen in Ihrem System anzuzeigen.
$ Timedatectl oder $ Timedatectl Status Ortszeit: Do 2017-06-15 13:29:09 ESSENSUME ESSENSCHAFT: THU 2017-06-15 10:29:09 UTC RTC-Zeit: Do 2017-06-15 10:29:09 Zeitzone: Afrika/Kampala (Eat, +0300) Netzwerkzeit auf: Ja NTP Synchronized: Ja RTC in lokalem TZ: Nein
Verwenden Sie die folgenden Befehle, um die richtige Zeitzone- und möglicherweise Systemzeit festzulegen.
$ sudo Timedatectl Set-TimeZone Afrika/Kampala $ sudo Timedatectl Set-Time "13:50:00"
Protokollnachrichten mit dem Befehl JournalCtl anzeigen
Journalctl ist ein Dienstprogramm, mit dem der Inhalt des Systemd Journal angezeigt wird (das vom Journald Service geschrieben wurde).
Um alle gesammelten Protokolle ohne Filterung anzuzeigen, geben Sie an.
$ journalctlProtokollnachrichten anzeigen
-- Die Protokolle beginnen mit dem Mi 2017-06-14 21:56:43 EAT, enden bei Thu 2017-06-15 12:28:19 Eat 14. Juni 21:56:43 Tecmint Systemd-Journald [336]: Runtime Journal (/Run /log/journal 14. Juni 21:56:43 Tecmint Kernel: Initialisierung von CGGroup Subsys CPUSET 14. Juni 21:56:43 Tecmint Kernel: Initialisierung der CGGROUP SUBSSYS CPU 14.2. 56:43 Tecmint Kernel: Linux Version 4.4.0-21-Generik.4.0-21- 14. Juni 21:56:43 Tecmint Kernel: Kernel unterstützt CPUS: Juni 14.22. Kernel: Centaur Centaurhauls 14. Juni 21:56:43 Tecmint Kernel: x86/fpu: xstate_offset [2]: 576, xstate_sies [2] 14. Juni 21:56:43 Tecmint Kernel: x86/fpu: Support XSave Feature 0x01: 'x87:' x87 FLO 14. Juni 21:56:43 Tecmint Kernel: x86/fpu: unterstützend xsave feature 0x02: 'sse reg : 43 Tecmint -Kernel: x86/FPU: Aktivierte XState -Funktionen 0x7, Kontext SI 14. Juni 21:56:43 Tecmint Kernel: x86/FPU: Verwenden von 'Eifer' FPU -Kontextschalter. 14. Juni 21:56:43 Tecmint Kernel: E820: BIOS-Bereitstellter physischer Ram-Karte: Juni 14.2. e820: [mem 0x0000000000090000-0x00000000000 Jun 14 21:56:43 tecmint kernel: BIOS-e820: [mem 0x0000000000100000-0x000000001ff Jun 14 21:56:43 tecmint kernel: BIOS-e820: [mem 0x0000000020000000-0x00000000201 Jun 14 21:56 : 43 Tecmint-Kernel: BIOS-E820: [MEM 0x0000000020200000-0x00000000400
Protokollnachrichten basierend auf Stiefeln anzeigen
Sie können eine Liste von Startnummern (relativ zum aktuellen Start), ihren IDs und den Zeitstempeln der ersten und letzten Nachricht, die dem Boot mit dem Start entsprechend sind, anzeigen --Listenstiefel
Möglichkeit.
$ journalctl --list-boots -1 9fb590b48e1242f58c2579defdbbddc9 Thu 2017-06-15 16:43:36 EAT-Thu 2017-06-15 1 0 464ae35c6e264a4ca087949936be434a Thu 2017-06-15 16:47:36 EAT-Thu 2017-06- 15 1
Verwenden Sie die Journaleinträge aus dem aktuellen Start (Nummer 0), um die -B
Wechseln Sie wie dieses (wie der Beispielausgang oben).
$ journalctl -b
Und um ein Tagebuch aus dem vorherigen Start zu sehen, verwenden Sie die -1
relativer Zeiger mit dem -B
Option wie unten.
$ journalctl -b -1
Verwenden Sie alternativ die Start -ID wie diese.
$ journalctl -B 9FB590B48E1242F58C2579DEFDBBDDC9
Filterungsprotokollnachrichten basierend auf der Zeit
Fügen Sie das hinzu, um die Zeit im koordinierten Universal Time (UTC) -Format zu verwenden --koordinierte Weltzeit
Optionen wie folgt.
$ journalctl -UTC
Alle Einträge seit einem bestimmten Datum und einer bestimmten Uhrzeit zu sehen, e.G. 15. Juni 2017 um 8:15 Uhr geben Sie diesen Befehl ein.
$ journalctl ---
Anzeigen neuerer Protokollnachrichten
Verwenden Sie die neuesten Protokollnachrichten (10 standardmäßig), um die -N
Flagge wie unten gezeigt.
$ journalctl -n $ journalctl -n 20
Anzeigen von Protokollnachrichten, die vom Kernel generiert werden
Um nur Kernel -Nachrichten zu sehen, ähnlich wie bei der DMESG -Befehlsausgabe, können Sie die verwenden -k
Flagge.
$ journalctl -k $ journalctl -k -b $ journalctl -k -b 9fb590b48e1242f58c2579defdbbdc9
Anzeigen von Protokollnachrichten, die von Einheiten generiert werden
Um alle Zeitschrifteneinträge für eine bestimmte Einheit anzusehen, verwenden Sie die -u
wie folgt wechseln.
$ journalctl -u apache2.Service
Geben Sie diesen Befehl zum aktuellen Start ein.
$ journalctl -b -u apache2.Service
Verwenden Sie dies, um Protokolle aus dem vorherigen Start anzuzeigen.
$ journalctl -b -1 -u Apache2.Service
Im Folgenden finden Sie einige andere nützliche Befehle:
$ journalctl -u apache2.Service $ journalctl -u apache2.Service -seit heute $ journalctl -u apache2.Service -U Nagios.Gottesdienst -seit gestern
Anzeigen von Protokollnachrichten, die durch Prozesse generiert werden
Um Protokolle anzuzeigen, die durch einen bestimmten Prozess generiert werden, geben Sie fest.
$ journalctl _pid = 19487 $ journalctl _pid = 19487 -Since heute $ journalctl _pid = 19487 -Sach gestern
Anzeigen von Protokollnachrichten, die von der Benutzer- oder Gruppen -ID generiert werden
Um Protokolle anzuzeigen, die von einem bestimmten Benutzer oder einer bestimmten Gruppe generiert werden, geben Sie die Benutzer- oder Gruppen -ID wie diese an.
$ journalctl _uid = 1000 $ journalctl _UID = 1000 -seit heute $ journalctl _uid = 1000 -b -1 -Sinne heute
Anzeigen von Protokollen, die von einer Datei generiert werden
Um alle von einer Datei generierten Protokolle anzuzeigen (möglicherweise eine ausführbare Datei), wie z.
$ journalctl/usr/bin/dbus-daemon $ journalctl/usr/bin/bash
Protokollnachrichten nach Priorität anzeigen
Sie können die Ausgabe auch basierend auf Nachrichtenprioritäten oder Prioritätsbereichen mithilfe der Ausgabe filtern -P
Flagge. Die möglichen Werte sind: 0 - Emergen, 1 - Alarm, 2 - Crit, 3 - ERR, 4 - WARNUNG, 5 - Bekanntmachung, 6 - Info, 7 - Debug):
$ journalctl -p err
Um einen Bereich anzugeben, verwenden Sie das unten stehende Format (ENTWORT ZUM WARNUNG).
$ journalctl -p 1… 4 oder $ journalctl -p Emerg… Warnung
Protokollnachrichten in Echtzeit anzeigen
Sie können praktisch Protokolle ansehen, wenn sie mit dem geschrieben werden -F
Option (ähnlich wie Tail -f Funktionalität).
$ journalctl -f
Handhabungsjournal -Display -Formatierung
Wenn Sie die Ausgangsformatierung der Journaleinträge steuern möchten, fügen Sie die hinzu -Ö
Fahnen und verwenden Sie diese Optionen: Katze, Export, JSON, JSON-Pretty, Json-Sse, Short, Short-ISO, Kurzmonoton, Kurzpreis und ausführlich (Überprüfen Sie die Bedeutung der Optionen auf der Mannseite:
Der Katze Die Option zeigt die tatsächliche Nachricht jedes Journaleintrags ohne Metadaten an (Zeitstempel usw.).
$ journalctl -b -u apache2.Service -o Katze
Verwalten von Zeitschriften auf einem System
Verwenden Sie die Journal -Datei auf interne Konsistenz, um die interne Konsistenz zu überprüfen --verifizieren
Möglichkeit. Wenn alles in Ordnung ist, sollte der Ausgang einen Pass angeben.
$ journalctl -pass:/run/log/journal/2a5d5f96ef9147c0b35535562b32d0ff/System.Journal 491F68: Unbenutzte Daten (Eintrag_offset == 0) Pass:/Run/Log/Journal/2A5D5F96EF9147C0B35535562B32D0FF/[E -Mail -Protected] 9866c3d4dd.Journal Pass:/Run/Log/Journal/2A5D5F96EF9147C0B35535562B32D0FF/[E -Mail Protected] 5D8945A9E.Journal Pass:/Run/Log/Journal/2A5D5F96EF9147C0B35535562B32D0FF/[E -Mail geschützt] 1Becab02f.Journal Pass:/Run/Log/Journal/2A5D5F96EF9147C0B35535562B32D0FF/[E -Mail Protected] 01CfCedff.Tagebuch
Löschen alter Journal -Dateien
Sie können auch die aktuelle Festplattennutzung aller Journal -Dateien mit dem anzeigen --Festplattennutzung
Optionen. Es zeigt die Summe der Festplattennutzung aller archivierten und aktiven Journal -Dateien:
$ journalctl-disk-usage
So löschen Sie alte (archivierte) Journal -Dateien, führen Sie die folgenden Befehle aus:
$ sudo journalctl-vacuum-size = 50m #delete-Dateien, bis der von ihnen verwendete Speicherplatz unter die angegebene Größe $ sudo journalctl-vacuum-time = 1years #delete-Dateien fällt, sodass alle Journal-Dateien keine Daten enthalten als die angegebene Zeitspan enthalten $ sudo journalctl-vacuum-files = 4 #delete-Dateien, so dass nicht mehr als die angegebene Anzahl separater Journaldateien im Speicherort bleiben
Rotierende Journaldateien
Zu guter Letzt können Sie Journald anweisen, Journal -Dateien mit dem zu drehen --drehen
Möglichkeit. Beachten Sie, dass diese Richtlinie erst nach Abschluss des Rotationsvorgangs zurückgibt:
$ sudo journalctl - -rotate
Eine ausführliche Nutzungsanleitung und Optionen finden Sie auf der Seite JournalCtl Man wie folgt.
$ MAN Journalctl
Schauen Sie sich einige nützliche Artikel an.
- Verwaltung des Systems für Systemstarts und -dienste (sysvinit, systemd und upstart)
- Petiti - Ein Open -Source -Log -Analyse -Tool für Linux -Sysadminen
- So richten und verwalten Sie die Protokolldrehung mithilfe von Logrotate unter Linux
- LNAV - Anschauen und analysieren Sie Apache -Protokolle von einem Linux -Terminal aus
Das war es fürs Erste. Verwenden Sie das Feedback von unten, um Fragen zu stellen oder Ihre Gedanken zu diesem Thema hinzuzufügen.
- « So installieren Sie Samba auf Ubuntu für die Dateifreigabe unter Windows
- So erweitern/reduzieren Sie LVMs (logische Volumenverwaltung) unter Linux - Teil II »