Ich versuche, journalctl
den Mustervergleich zu verwenden SYSLOG_IDENTIFIERS
. Als Beispiel habe ich eine Menge Nachrichten markiert sshd
:
$ journalctl -t sshd | wc -l
987
aber wenn ich versuche, sie mithilfe der Mustererkennung zu finden:
$ journalctl -t 'ssh*'
-- No Entries --
$ journalctl -t 'ssh.*'
-- No Entries --
Die journalctl-Manpage sagt, dass Muster funktionieren sollten, aber ich kann nichts anderes darüber finden, wie Muster in systemd verwendet / definiert werden.
$ man journalctl
....
-t, --identifier=SYSLOG_IDENTIFIER|PATTERN
Show messages for the specified syslog identifier SYSLOG_IDENTIFIER,
or for any of the messages with a "SYSLOG_IDENTIFIER" matched by PATTERN.
Ich verwende ArchLinux:
$ journalctl --version
systemd 225
+PAM -AUDIT -SELINUX -IMA -APPARMOR +SMACK -SYSVINIT +UTMP +LIBCRYPTSETUP
+GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID -ELFUTILS +KMOD +IDN
systemd
arch-linux
journald
Mark Grimes
quelle
quelle
Antworten:
Dies war ein Dokumentationsfehler , der geschlossen wurde, als der Tippfehler auf der
man
Seite aktualisiert wurde.Der Fehlerbericht führte zu folgenden Kommentaren im Code :
Als Problemumgehung können Sie möglicherweise die
grep
in den Kommentaren zu Ihrer Frage empfohlenen Optionen verwenden. Etwas wie das:quelle
Die ursprünglichen Fragentitel "Wie verwenden Sie die journalctl-Muster von systemd ? " Dies weist auf eine sehr spezielle Funktion des Journals mit dem Namen "MATCHES" und nicht auf eine generische Filterung nach regulären Ausdrücken hin.
Das „matches“ Feature ist vollständig detailliert zusammen mit allen anderen Funktionen auf seiner freundlichen Mann Seite , die an ihrem Anfang heißt es :
Die Funktion "Übereinstimmungen" dient dazu, die Protokolleinträge basierend auf einer Reihe möglicher Filter herauszufiltern.
In Fällen wie dem in der ursprünglichen Frage ist dies meine Vorgehensweise (ich führe auch ArchLinux aus).
Zuerst müssen Sie den Namen des Dienstes kennen, an dem Sie interessiert sind. Normalerweise mache ich Folgendes:
Ich verstehe das:
Dann können Sie
journalctl
nach dem "systemd unit name" filtern:Es heißt "die Übereinstimmungen filtern". Das wäre es.
Wenn die ursprüngliche Frage stattdessen so geschrieben wurde, dass sie " wie auf die
grep
journalctl- Ausgabe angewendet werden soll", können Sie sie entwedergrep
auf die "bisher" gespeicherten Protokolle mit anwendenoder schauen Sie sich die aktuell eingehenden Protokolleinträge mit an
und drücken Sie STRG-C, um den Fluss zu stoppen. Natürlich können Sie komplexere Pipes mit feineren regelmäßigen Mustern oder mehreren
grep
Befehlen verwenden.quelle
ssh*
. Die journalctl docs gaben an, dass dies auf einmal möglich war. Die Dokumente waren falsch und wurden aktualisiert.Sie können die Unit-Datei beim Ausführen definieren
journalctl
.Ich zeige nur das Tagebuch von
sshd
quelle