Como você usa os padrões journalctl do systemd?

13

Estou tentando usar a correspondência de padrões de journalctl em SYSLOG_IDENTIFIERS . Por exemplo, tenho uma tonelada de mensagens marcadas com sshd :

$ journalctl -t sshd | wc -l
987

mas se eu tentar usar correspondência de padrões para encontrá-los:

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

A página man journalctl diz que os padrões devem funcionar, mas não consigo encontrar mais nada sobre como os padrões são usados / definidos no 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.

Estou executando o ArchLinux:

$ journalctl --version
systemd 225
+PAM -AUDIT -SELINUX -IMA -APPARMOR +SMACK -SYSVINIT +UTMP +LIBCRYPTSETUP
+GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID -ELFUTILS +KMOD +IDN
    
por Mark Grimes 12.09.2015 / 20:29

3 respostas

8

Este foi um bug doc que foi fechado quando o erro de digitação na página man foi atualizado.

O relatório de erros levou aos seguintes comentários no código :

We don't actually accept patterns, hence don't claim so.

Como solução alternativa, você pode usar grep como sugerido nos comentários da sua pergunta. Algo parecido com isto:

journalctl | grep sshd
    
por 29.02.2016 / 21:11
-1

Os títulos das perguntas originais "Como você usa journalctl patterns do systemd". Isso aponta para um recurso muito específico do journalctl chamado "MATCHES" em vez de uma filtragem de expressão regular genérica.

A funcionalidade "MATCHES" é totalmente detalhada, juntamente com todas as outras funcionalidades, na sua página de manual que afirma no seu começo:

If one or more match arguments are passed, the output is filtered accordingly.

O recurso "matches" serve para filtrar as entradas de log com base em vários filtros possíveis.

Para casos como o da pergunta original, é assim que eu faço (eu também corro o ArchLinux).

Primeiro, você precisa saber o nome do serviço em que está interessado. Geralmente, faço isso:

systemctl | grep sshd

Eu entendo isso:

sshd.service       loaded active running   OpenSSH Daemon

Em seguida, você pode pedir ao journalctl para filtrar pelo "nome da unidade do systemd" da seguinte forma:

journalctl _SYSTEMD_UNIT=sshd.service

É chamado de "filtragem de correspondências". Isso é tudo.

Caso a pergunta original tenha sido escrita para significar " como aplicar a saída grep ao journalctl ", você pode aplicar grep aos registros armazenados "até agora" com

journalctl | grep ssh

ou observe as entradas de registro recebidas no momento com

journalctl -f | grep ssh

e pressione CTRL-C para interromper o fluxo. Naturalmente, você pode usar canais mais complexos com padrões regulares mais refinados ou vários comandos grep .

    
por 30.10.2018 / 17:53
-2

Você pode definir o arquivo de unidade quando executar journalctl .

journalctl -f -u sshd.service

Eu mostrarei apenas o diário de sshd

    
por 18.07.2018 / 07:42