¿Cómo se usan los patrones journalctl de systemd?

21

Estoy tratando de usar journalctlla coincidencia de patrones en SYSLOG_IDENTIFIERS. Como ejemplo, tengo un montón de mensajes etiquetados sshd:

$ journalctl -t sshd | wc -l
987

pero si trato de usar la coincidencia de patrones para encontrarlos:

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

La página de manual de journalctl dice que los patrones deberían funcionar, pero no puedo encontrar nada más sobre cómo se usan / definen los patrones en 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.

Estoy ejecutando ArchLinux:

$ journalctl --version
systemd 225
+PAM -AUDIT -SELINUX -IMA -APPARMOR +SMACK -SYSVINIT +UTMP +LIBCRYPTSETUP
+GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID -ELFUTILS +KMOD +IDN
Mark Grimes
fuente
55
Según las discusiones sobre IRC, parece que esto es un error (o un problema con la documentación). Un error ha sido archivado .
Mark Grimes
1
intente esto en tiempo real: journalctl -f | grep sshd
nexoma
En realidad, puede agregar múltiples -t <identificador> si eso le conviene.
sivann

Respuestas:

15

Este fue un error de documentación que se cerró cuando manse actualizó el error tipográfico en la página.

El informe de error condujo a los siguientes comentarios en el código :

En realidad, no aceptamos patrones, por lo tanto, no lo afirmamos.

Como solución alternativa, puede usar grepcomo se sugiere en los comentarios a su pregunta. Algo como esto:

journalctl | grep sshd
Tim Penner
fuente
0

La pregunta original se titula "¿Cómo se usan los patrones de journalctl de systemd ? ". Esto apunta a una característica muy específica del journalctl llamada "MATCHES" en lugar de un filtro genérico de expresión regular.

La función "COINCIDENTES" se detalla completamente junto con todas las demás funciones en su página de manual amigable que dice desde el principio:

Si se pasan uno o más argumentos de coincidencia, la salida se filtra en consecuencia.

La función "coincide" está diseñada para filtrar las entradas de registro en función de una serie de posibles filtros.

Para casos como el de la pregunta original, así es como lo hago (también ejecuto ArchLinux).

Primero, necesita saber el nombre del servicio que le interesa. Usualmente hago esto:

systemctl | grep sshd

Entiendo esto:

sshd.service       loaded active running   OpenSSH Daemon

Luego puede pedir journalctlque se filtre por el "nombre de la unidad systemd" de esta manera:

journalctl _SYSTEMD_UNIT=sshd.service

Se llama "el filtrado de coincidencias". Eso sería todo.

En caso de que la pregunta original se haya escrito en el sentido de " cómo aplicar grepa la salida de journalctl ", puede aplicar grepa los registros almacenados "hasta ahora" con

journalctl | grep ssh

o mira las entradas de registro entrantes actualmente con

journalctl -f | grep ssh

y presione CTRL-C para detener el flujo. Por supuesto, puede usar tuberías más complejas con patrones regulares de grano fino o múltiples grepcomandos.

EnzoR
fuente
Gracias por la respuesta, pero _SYTEMD_UNIT no acepta patrones. Como se menciona en mi comentario y la respuesta de @ Tim, este fue un error en los documentos.
Mark Grimes
@ MarkGrimes, al menos para mí (systemd 239) funciona. Siempre pruebo lo que digo antes de escribirlo. Funciona según lo documentado.
EnzoR
La pregunta es sobre el uso de patrones , por ejemplo ssh*. Los documentos de journalctl declararon que esto era posible al mismo tiempo. Los documentos eran incorrectos y se han actualizado.
Mark Grimes el
@MarkGrimes La pregunta es sobre los patrones de journalctl de systemd, no cualquier patrón de caracteres . Por favor vea mi respuesta actualizada. Y funciona bajo ArchLinux exactamente como se documenta.
EnzoR
-2

Puede definir el archivo de unidad cuando ejecuta journalctl.

journalctl -f -u sshd.service

Solo mostraré el diario de sshd

Kwun Yeung
fuente
Esta respuesta no responde a la pregunta. El usuario solicita el uso de patrones en un filtro.
Merlijn Sebrechts