Pesquisa de site

Como usar o Journalctl para ler logs do sistema Linux


Por muitos anos, os logs do sistema e do kernel foram gerenciados por um utilitário chamado syslogd. A maioria dos sistemas operacionais baseados em Linux migrou para o systemd, que vem com um daemon de log diferente, o journald. Para interagir com esses logs, você usa o utilitário journalctl.

Dê permissão ao usuário para ler os logs do sistema

Somente usuários pertencentes aos grupos “adm” ou “systemd-journal” podem ler os logs do systemd. Distribuições como o Ubuntu já adicionam você como usuário ao grupo adm.

Abra um emulador de terminal e digite o seguinte comando:

groups

Se você vir “adm” ou “systemd-journal” na saída, poderá pular o restante das etapas desta seção. Caso contrário, adicione-se ao grupo “adm”.

sudo adduser $USER adm

Você teria que reiniciar sua sessão de login para que esta alteração entrasse em vigor (sair e fazer login). Se você não puder fazer isso por vários motivos, use este comando para efetuar login no novo grupo sem reiniciar a sessão gráfica.

newgrp adm

Não feche a janela do terminal. Agora você faz parte do grupo adm - na sessão do terminal, mas não na sessão gráfica. Se você abrir um novo terminal neste momento, seu usuário não estará mais logado no grupo adm.

Verifique se o diário é persistente

Os logs do systemd podem ser persistentes ou voláteis. No Ubuntu e em outras distros, eles são persistentes por padrão. No Debian 9 eles são voláteis, o que significa que são mantidos apenas na memória (não no disco) e desaparecem no desligamento ou reinicialização. Digite o seguinte comando.

journalctl --list-boots

Se houver várias entradas aqui, não há mais nada que você precise fazer. Isso significa que os diários são mantidos em disco (persistentes). Se você obtiver apenas uma entrada, o diário será volátil. Mude para persistente.

sudo sed -i '/Storage/ c\Storage=persistent' /etc/systemd/journald.conf

Selecione qual diário de entrada de inicialização visualizar

Normalmente, você desejará ver o log da inicialização atual. Em raras ocasiões você desejará ver a inicialização anterior, quando algo deu errado, por exemplo, após uma falha no sistema.

Para visualizar o log da inicialização atual:

journalctl -b 0

Para a inicialização anterior, use "-1" em vez de "0" e para duas inicializações anteriores, "-2" e assim por diante.

journalctl -b -1

Navegue e pesquise no diário do sistema

Depois de abrir o log com o journalctl, você pode navegar pelo texto com as teclas de seta e as teclas PAGE UP ou PAGE DOWN. Outras chaves úteis são:

  • > para ir para o final da saída.
  • < para ir para o início da saída.
  • / para pesquisar uma sequência de texto. Depois de pressionar a tecla de barra, digite a string que deseja encontrar, seguida de Enter. A string diferencia maiúsculas de minúsculas, então "rede" não encontrará strings de "Rede". A pesquisa começa a partir da sua posição de visualização atual, para baixo. Para pesquisar para cima, use ?.
  • n encontre a próxima correspondência em uma pesquisa atual. N encontra o anterior.
  • q sai do utilitário journalctl.

Filtrar entradas de log por prioridade

Às vezes, você deseja apenas procurar erros, ignorando avisos e mensagens de status. Cada entrada em um log tem uma prioridade: emergência, alerta, crítico, erro, aviso, aviso, informação. Eles estão listados em ordem de importância, sendo a emergência reservada para os piores cenários (sistema inutilizável). Mensagens informativas são apenas textos informativos, relatando o status de programas que funcionam normalmente.

Para exibir apenas mensagens de erro da inicialização atual, digite:

journalctl -b 0 -p err

Se você quiser ver erros em todas as inicializações, basta remover o parâmetro "-b":

journalctl -p err

Estes são os códigos que você pode passar para o parâmetro "-p":

  • alerta
  • crítico
  • depurar
  • emergir
  • errar
  • informações
  • perceber
  • aviso

Filtrar entradas de log por caminho para processar arquivo executável ou unidade Systemd

Alguns processos são iniciados e gerenciados pelas chamadas unidades systemd. Para ver todos os logs relacionados à unidade de serviço cron, digite:

journalctl -u cron.service

Você pode ver quais unidades você tem disponíveis:

systemctl list-dependencies

Você pode navegar na lista com as teclas de seta para cima e para baixo. Pressione q para sair.

Se preferir usar o caminho para o arquivo executável do programa (binário), basta passar o caminho completo como argumento.

journalctl /usr/sbin/cron

Não se esqueça, você também pode filtrar pela entrada de inicialização atual para se livrar de mensagens desnecessárias.

journalctl -b 0 /usr/sbin/cron

Conclusão

O Journalctl tem como objetivo tornar mais fácil encontrar o que você procura. Se você quiser aprender sobre parâmetros mais avançados que pode usar, consulte a página de manual do comando journalctl.

Artigos relacionados