Comment utilisez-vous les modèles journalctl de systemd


21

J'essaie d journalctl' utiliser la correspondance de motifs de SYSLOG_IDENTIFIERS. À titre d'exemple, j'ai une tonne de messages étiquetés sshd:

$ journalctl -t sshd | wc -l
987

mais si j'essaie d'utiliser la correspondance de motifs pour les trouver:

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

La page de manuel journalctl indique que les modèles devraient fonctionner, mais je ne trouve rien d'autre sur la façon dont les modèles sont utilisés / définis dans 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.

J'utilise 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
D'après les discussions sur IRC, il semble que ce soit un bogue (ou un problème avec la documentation). Un bug a été déposé .
Mark Grimes

1
essayez ceci en temps réel: journalctl -f | grep sshd
nexoma

Vous pouvez réellement ajouter plusieurs -t <identifier> si cela vous convient.
sivann

Réponses:


15

Il s'agissait d'un bogue de documentation qui a été fermé lorsque la faute de frappe dans la manpage a été mise à jour.

Le rapport de bogue a conduit aux commentaires suivants dans le code :

Nous n'acceptons pas réellement les modèles, donc ne le prétendons pas.

Comme solution de contournement, vous pourrez peut-être utiliser grepcomme suggéré dans les commentaires à votre question. Quelque chose comme ça:

journalctl | grep sshd

0

La question d'origine s'intitule "Comment utilisez-vous les modèles journalctl de systemd ". Cela pointe vers une fonctionnalité très spécifique du journalctl appelée "MATCHES" plutôt qu'un filtrage générique des expressions régulières.

La fonction "MATCHES" est entièrement détaillée avec toutes les autres fonctionnalités sur sa page de manuel conviviale qui déclare au tout début:

Si un ou plusieurs arguments de correspondance sont transmis, la sortie est filtrée en conséquence.

La fonction "correspond" est destinée à filtrer les entrées de journal en fonction d'un certain nombre de filtres possibles.

Pour des cas comme celui de la question d'origine, voici comment je fais (je lance aussi ArchLinux).

Tout d'abord, vous devez connaître le nom du service qui vous intéresse. Je fais généralement ceci:

systemctl | grep sshd

J'ai compris:

sshd.service       loaded active running   OpenSSH Daemon

Ensuite, vous pouvez demander journalctlde filtrer par le "nom de l'unité systemd" comme ceci:

journalctl _SYSTEMD_UNIT=sshd.service

Cela s'appelle "le filtrage des correspondances". Ce serait tout.

Dans le cas où la question d'origine a été écrite à la place pour signifier " comment appliquer grepà la sortie journalctl ", alors vous pouvez soit appliquer grepaux journaux stockés "jusqu'à présent" avec

journalctl | grep ssh

ou regardez les entrées de journal actuellement entrantes avec

journalctl -f | grep ssh

et appuyez sur CTRL-C pour arrêter le flux. Bien sûr, vous pouvez utiliser des tuyaux plus complexes avec des motifs réguliers à grain plus fin ou plusieurs grepcommandes.


Merci pour la réponse, mais _SYTEMD_UNIT n'accepte pas les modèles. Comme mentionné dans mon commentaire et la réponse de @ Tim, c'était un bug dans la documentation.
Mark Grimes

@MarkGrimes, au moins pour moi (systemd 239) cela fonctionne. Je teste toujours ce que je dis avant de l'écrire. Cela fonctionne comme documenté.
EnzoR

La question concerne l'utilisation de modèles , par exemple ssh*. Les docs du journal ont déclaré que cela était possible à un moment donné. Les documents étaient incorrects et ont été mis à jour.
Mark Grimes

@MarkGrimes La question concerne les modèles de journalctl de systemd pas tout motif de caractère . Veuillez voir ma réponse mise à jour. Et cela fonctionne sous ArchLinux exactement comme documenté.
EnzoR

-2

Vous pouvez définir le fichier d'unité lorsque vous exécutez journalctl.

journalctl -f -u sshd.service

Je ne montrerai que le journal de sshd


Cette réponse ne répond pas à la question. L'utilisateur demande l'utilisation de modèles dans un filtre.
Merlijn Sebrechts
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.