De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.

Como Usar o Journalctl para Encontrar Erros e Debugar Serviços no Linux

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 17 de junho de 2026

O journalctl é uma das ferramentas mais importantes e poderosas para a administração de sistemas Linux modernos. Ele é o canivete suíço para investigar erros, monitorar serviços e entender exatamente o que está acontecendo por baixo dos panos do sistema operacional.

Abaixo, você confere o guia completo sobre o journalctl: sua história, a revolução que ele trouxe e um manual prático com os principais comandos para o seu dia a dia.

Origem e Motivação: Por que o `journalctl` foi criado?

Para entender o journalctl, precisamos entender o systemd.

Historicamente, os sistemas Linux utilizavam um sistema de inicialização antigo chamado SysVinit (ou Upstart) e um serviço de logs chamado syslogd (ou rsyslog).

O Velho Problema dos Logs em Texto Puro

No modelo antigo, os logs do sistema eram espalhados em vários arquivos de texto puro dentro do diretório /var/log/ (como /var/log/syslog, /var/log/auth.log, /var/log/boot.log). Esse formato tinha problemas graves:

  1. Descentralização: Cada serviço salvava seus logs onde queria e no formato que bem entendia.
  2. Falta de Metadados: Os logs eram apenas strings de texto. Era difícil filtrar mensagens por um usuário específico, por um serviço exato ou por um intervalo de microssegundos.
  3. Insegurança: Arquivos de texto puro podiam ser facilmente alterados ou apagados por invasores para esconder rastros

A Solução: O Journald

Quando o systemd foi introduzido para gerenciar o ecossistema do Linux, os desenvolvedores criaram o `systemd-journald. Em vez de arquivos de texto espalhados, o journald centralizou todas as mensagens do sistema (kernel, serviços em segundo plano, mensagens de boot e erros de aplicativos) em um banco de dados binário indexado.

Como esse banco é binário, você não pode abri-lo com um editor de texto comum como o vim, nano ou o cat. É aí que entra o journalctl: ele é a ferramenta oficial de linha de comando criada exclusivamente para consultar, filtrar e extrair informações desse banco de dados de forma ultra-rápida.

Principais Comandos do journalctl

Como o journalctl acessa dados sensíveis do sistema e de outros usuários, a maioria dos comandos abaixo exige privilégios de administrador (sudo).

1. O Básico do Básico

Se você digitar apenas o comando puro, ele abrirá o histórico completo de logs do seu computador, desde o primeiro registro salvo:

$ sudo sudo journalctl

Navegação: Use as setas do teclado para rolar. Pressione q para sair.

Se você quiser ver as mensagens mais recentes primeiro (o fim do arquivo), adicione a flag -e (end):

$ sudo sudo journalctl -e

2. Monitoramento em Tempo Real (O substituto do tail -f)

Se você está testando um programa ou esperando um erro acontecer e quer ver as linhas de log surgindo na tela em tempo real, use a flag -f (follow):

$ sudo journalctl -f

3. Filtrando Logs por Serviço (O mais utilizado)

Esta é a função mais útil do journalctl. Se você quer investigar o comportamento de um serviço específico do systemd (como o Apache, o Docker, o SSH, ollama), use a flag -u (unit):

$ sudo journalctl -u ollama.service

Você pode combinar com o -f para monitorar o serviço em tempo real: sudo journalctl -u ollama.service -f

4. Filtrando por Tempo e Data

Diga adeus ao uso do grep para achar datas em arquivos de texto. O journalctl entende expressões de tempo em inglês de forma nativa:

Ver logs desde ontem:

$ sudo journalctl --since yesterday

Ver logs de um horário específico até agora:

$ sudo journalctl --since "2026-06-15 14:00:00"

Ver logs gerados nos últimos 10 minutos:

$ sudo journalctl --since "10m ago"

Combinando início e fim (Janela de tempo):

$ sudo journalctl --since "2 hours ago" --until "30 minutes ago"

5. Filtrando por Importância (Níveis de Erro)

O journalctl divide as mensagens por gravidade (0 a 7, indo de Emergência a Debug). Você pode filtrar para ver apenas o que realmente importa usando a flag -p (priority):

Ver apenas erros críticos e falhas do sistema:

$ sudo journalctl -p err -b

Níveis comuns que você pode usar: emerg (emergência), alert (alerta), crit (crítico), err (erro), warning (aviso).

6. Logs Exclusivos do Kernel (dmesg)

Se você acabou de espetar um dispositivo USB que não funcionou, ou quer ver erros físicos de hardware e memória detectados pelo Kernel do Linux, use a flag -k (kernel):

$ sudo journalctl -k

7. Investigando o Processo de Boot

Sempre que você reinicia o computador, o journalctl fecha um ciclo e começa outro.

Ver logs apenas do boot atual (desde que você ligou a máquina):

$ sudo journalctl -b

Ver logs do boot anterior (o penúltimo antes de reiniciar):

$ sudo journalctl -b -1

Listar todos os boots que o sistema tem guardado na memória:

$ sudo journalctl --list-boots

Tabela de Atalhos

O que você quer fazer? Comando
Ver tudo e ir direto para o final sudo journalctl -e
Monitorar o sistema ao vivo sudo journalctl -f
Ver logs de um app específico sudo journalctl -u nome_do_serviço
Ver erros das últimas 2 horas sudo journalctl --since "2h ago" -p err
Descobrir erros do boot anterior sudo journalctl -b -1 -p err


Veja a relação completa dos artigos de Rubens Queiroz de Almeida