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.