J'essaie d'utiliser la correspondance de motifs de journalctl
sur SYSLOG_IDENTIFIERS
. Par 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
Il s'agissait d'un doc bug qui a été fermé lorsque la faute de frappe dans la page man
a été mise à jour.
Le rapport de bogue a conduit à ce qui suit commentaires dans le code :
Nous n'acceptons pas réellement les modèles, donc ne le revendiquons pas.
Comme solution de contournement, vous pourrez peut-être utiliser grep
comme suggéré dans les commentaires de votre question. Quelque chose comme ça:
journalctl | grep sshd
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 fonctionnalité "MATCHES" est entièrement détaillée ainsi que toutes les autres fonctionnalités sur son amicale page de manuel qui déclare à ses débuts:
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 à journalctl
de 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
à journalctl sortie", alors vous pouvez soit appliquer grep
aux 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 commandes grep
.