Como Usar Journalctl para Ler Logs do Sistema Linux

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

Dar 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 Ubuntu já adicionam você como um usuário ao grupo adm.

Abra um emulador de terminal e digite o seguinte comando:

groups

journalctl-groups

Se você ver “adm” ou “systemd-journal” na saída, pode pular o restante dos passos desta seção. Caso contrário, adicione-se ao grupo “adm”.

sudo adduser $USER adm

Você terá que reiniciar sua sessão de login para que essa alteração tenha efeito (sair e entrar novamente). Se você não puder fazer isso por vários motivos, use este comando para entrar no novo grupo sem reiniciar a sessão gráfica.

newgrp adm

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

Verificar se o Journal É 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, significando que são mantidos apenas na memória (não no disco) e desaparecem ao desligar ou reiniciar. Insira o seguinte comando.

journalctl --list-boots

journalctl-list-boots

Se houver várias entradas aqui, não há mais nada que você precise fazer. Isso significa que os journals são mantidos no disco (persistentes). Se você obtiver apenas uma entrada, então o journal é volátil. Mude-o para persistente.

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

Selecionar Qual Entrada de Boot o Journal Visualizar

Normalmente, você vai querer ver o log do boot atual. Em raras ocasiões, você vai querer ver o boot anterior, quando algo deu errado, por exemplo, após uma falha do sistema.

Para visualizar o log do boot atual:

journalctl -b0

journalctl-view-current-boot

Para o boot anterior, use “-1” em vez de “0”, e para dois boots atrás, “-2” e assim por diante.

journalctl -b-1

Navegar e Pesquisar pelo Journal do Sistema

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

  • para ir ao final da saída.

  • < para ir ao começo da saída.
  • / para pesquisar uma string de texto. Depois de pressionar a tecla de barra, insira a string que você deseja encontrar, seguida de Enter. A pesquisa é sensível a maiúsculas e minúsculas, então “network” não encontrará strings “Network”. A pesquisa começa a partir da sua posição de visualização atual, para baixo. Para pesquisar para cima, use ?.
  • n encontra a próxima correspondência em uma pesquisa atual. N encontra a anterior.
  • q sai do utilitário journalctl.

journalctl-searching

Filtrar Entradas de Log por Prioridade

Às vezes, você só quer buscar por erros, ignorando avisos e mensagens de status. Cada entrada em um log tem uma prioridade: emergência, alerta, crítica, erro, aviso, notificação, informação. Essas são listadas em ordem de importância, sendo emergência reservada para os piores cenários (sistema inutilizável). Mensagens de informação são apenas texto informativo, relatando o status de programas que funcionam normalmente.

Para exibir apenas mensagens de erro do boot atual, insira:

journalctl -b0-p err

journalctl-filter-errors

Se você quiser ver erros de todos os boots, basta remover o parâmetro “-b”:

journalctl -p err

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

  • alert
  • crit
  • debug
  • emerg
  • err
  • info
  • notice
  • warning

Filtrar Entradas de Log pelo Caminho para o Arquivo Executável do Processo ou Unidade do Systemd

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

journalctl -u cron.service

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

systemctl list-dependencies

journalctl-list-dependencies

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

Se você preferir usar o caminho para o arquivo executável do programa (binário), simplesmente passe seu caminho completo como um argumento.

journalctl /usr/sbin/cron

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

journalctl -b0/usr/sbin/cron

Conclusão

O journalctl visa facilitar a busca pelo que você está procurando. Se você quiser aprender sobre parâmetros mais avançados que pode usar, consulte a página do manual do comando journalctl.