Come usi i pattern journalctl di systemd


21

Sto cercando di usare journalctlla corrispondenza del modello su SYSLOG_IDENTIFIERS. Ad esempio, ho un sacco di messaggi taggati sshd:

$ journalctl -t sshd | wc -l
987

ma se provo ad usare il pattern matching per trovarli:

$ journalctl -t 'ssh*'
-- No Entries --
$ journalctl -t 'ssh.*'
-- No Entries --

La pagina man journalctl dice che i pattern dovrebbero funzionare, ma non riesco a trovare nient'altro su come i pattern sono usati / definiti in systemd.

$ 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.

Sto eseguendo ArchLinux:

$ journalctl --version
systemd 225
+PAM -AUDIT -SELINUX -IMA -APPARMOR +SMACK -SYSVINIT +UTMP +LIBCRYPTSETUP
+GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID -ELFUTILS +KMOD +IDN

5
Sulla base delle discussioni su IRC, sembra che questo sia un bug (o un problema con la documentazione). È stato archiviato un bug .
Mark Grimes,

1
prova questo in tempo reale: journalctl -f | grep sshd
nexoma

Puoi effettivamente aggiungere più -t <identificatore> se ti va bene.
sivann

Risposte:


15

Si trattava di un bug del documento che veniva chiuso durante l' managgiornamento dell'errore di battitura nella pagina.

La segnalazione di bug ha portato ai seguenti commenti nel codice :

In realtà non accettiamo modelli, quindi non lo rivendichiamo.

Come soluzione alternativa, potresti essere in grado di utilizzare grepcome suggerito nei commenti alla tua domanda. Qualcosa come questo:

journalctl | grep sshd

0

La domanda originale si intitola "Come si usano gli schemi journalctl di systemd ". Questo indica una caratteristica molto specifica del journalctl chiamata "MATCHES" piuttosto che un filtro generico per le espressioni regolari.

La funzione "MATCHES" è completamente dettagliata insieme a tutte le altre funzionalità nella sua pagina man amichevole che afferma all'inizio:

Se vengono passati uno o più argomenti di corrispondenza, l'output viene filtrato di conseguenza.

La funzione "corrispondenze" ha lo scopo di filtrare le voci del registro in base a una serie di possibili filtri.

Per casi come quello della domanda originale, ecco come faccio (eseguo anche ArchLinux).

Innanzitutto, devi conoscere il nome del servizio che ti interessa. Di solito faccio questo:

systemctl | grep sshd

Capisco questo:

sshd.service       loaded active running   OpenSSH Daemon

Quindi puoi chiedere journalctldi filtrare in base al "nome unità systemd" in questo modo:

journalctl _SYSTEMD_UNIT=sshd.service

Si chiama "filtro delle corrispondenze". Quello sarebbe.

Nel caso in cui la domanda originale fosse stata scritta per indicare " come applicaregrep all'output journalctl ", è possibile applicare grepi registri archiviati "finora" con

journalctl | grep ssh

oppure guarda le voci di registro attualmente in arrivo con

journalctl -f | grep ssh

e premi CTRL-C per fermare il flusso. Naturalmente, puoi usare pipe più complesse con schemi regolari a grana più fine o grepcomandi multipli .


Grazie per la risposta, ma _SYTEMD_UNIT non accetta i pattern. Come menzionato nel mio commento e nella risposta di @ Tim, questo era un bug nei documenti.
Mark Grimes,

@MarkGrimes, Almeno per me (systemd 239) funziona. Metto sempre alla prova ciò che dico prima di scriverlo. Funziona come documentato.
EnzoR

La domanda riguarda l'uso dei modelli , per esempio ssh*. I documenti journalctl affermavano che ciò era possibile in una sola volta. I documenti non erano corretti e sono stati aggiornati.
Mark Grimes,

@MarkGrimes La domanda riguarda gli schemi journalctl di systemd e non gli schemi di caratteri . Si prega di vedere la mia risposta aggiornata. E funziona sotto ArchLinux esattamente come documentato.
EnzoR,

-2

È possibile definire il file di unità quando si esegue journalctl.

journalctl -f -u sshd.service

Mostrerò solo il diario di sshd


Questa risposta non risponde alla domanda. L'utente chiede l'utilizzo di schemi in un filtro.
Merlijn Sebrechts,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.