Linux / Comando dmesg: consultar mensagens do kernel e de inicialização
dmesg lê as mensagens disponíveis no buffer circular do kernel Linux. Use-o para investigar detecção de hardware, drivers, sistemas de arquivos e avisos do kernel, inclusive durante a inicialização; ele não reúne, por si só, todos os logs de aplicações ou de inicializações anteriores.
O kernel é o núcleo do sistema operacional. Seu buffer circular guarda uma quantidade limitada de registros: mensagens antigas podem ser sobrescritas por novas. Por isso, uma consulta atual não é um histórico completo de tudo que aconteceu desde a instalação do sistema.
Sintaxe e preparação
dmesg [opções]
Os colchetes descrevem opções e não devem ser digitados. Abra um terminal no Linux investigado e confira command -v dmesg, dmesg --version, dmesg --help e man dmesg. A implementação descrita aqui pertence a util-linux; outras versões ou implementações podem oferecer opções diferentes.
É necessário ter permissão para ler as mensagens do kernel. Se houver erro de acesso, confira a política do sistema e use uma conta autorizada para a consulta. Não interprete a falha como ausência de mensagens nem altere as restrições de segurança apenas para obter uma listagem.
Ler mensagens com um paginador
dmesg | less
O caractere | envia a saída para less, um paginador que permite ler uma tela de cada vez. No terminal interativo, use as setas ou a barra de espaço para navegar, / para procurar um texto e q para sair. O comando consulta o conteúdo disponível no momento; esse pipeline não é um acompanhamento contínuo de novas mensagens.
Confira também as mensagens de erro antes de analisar a saída. No Bash, o estado final de um pipeline normalmente é o do último programa: less pode terminar sem erro mesmo que dmesg tenha falhado. Os estados de cada componente podem ser consultados em PIPESTATUS imediatamente após o pipeline, antes de executar outro comando.
Filtrar avisos e erros
dmesg --level=err,warn
A lista separada por vírgulas seleciona exatamente os níveis err e warn. Ela não inclui automaticamente crit, alert ou emerg. Se você procura todos os níveis mais graves, confira a lista aceita pela ajuda local e selecione também os níveis necessários; não interprete este filtro como uma auditoria completa de problemas críticos.
Quando a leitura funciona e não retorna registros, o buffer atual pode não conter mensagens dos níveis escolhidos. Isso não prova que não houve falhas: o filtro, a retenção limitada e o fato de um problema não ter gerado uma mensagem também limitam a conclusão. Para entender a sequência dos acontecimentos, volte à consulta sem filtro e leia o contexto ao redor das mensagens relevantes.
Acompanhar novas mensagens
dmesg --follow
A opção --follow, ou -w, mostra o conteúdo disponível e continua aguardando novas mensagens. Para encerrar a espera no terminal, pressione Ctrl+C; isso interrompe a consulta, sem limpar o buffer. Permanecer sem novas linhas pode significar simplesmente que não chegaram novos registros.
Na implementação util-linux, esse acompanhamento exige acesso de leitura a /dev/kmsg. Se a opção não funcionar, verifique a ajuda, a versão e a mensagem de erro. A alternativa --follow-new, quando disponível, espera e mostra somente mensagens novas; ela tem uma finalidade diferente de rever o conteúdo já existente.
Interpretar o horário e a linha de mensagem
Para limitar a apresentação às três últimas linhas produzidas pelo filtro, use:
dmesg --level=err,warn | tail -n 3
Tail corta linhas da saída filtrada, e uma mensagem pode ocupar mais de uma linha. O trecho não representa necessariamente três eventos completos. Esta linha ilustra o formato de uma mensagem e não foi obtida neste ambiente:
[ 12.345678] device: warning message
- [12.345678]: exemplifica uma marca temporal relativa, normalmente apresentada em segundos desde a inicialização nesse formato. Não é uma data de calendário.
- device: representa um identificador no texto da mensagem; o conteúdo real depende do subsistema.
- warning message: é apenas o texto ilustrativo de um aviso. O filtro --level usa o nível do registro, não a presença da palavra inglesa warning no texto.
A opção -T converte a apresentação para um horário legível, mas a conversão pode ser imprecisa. O manual de dmesg do projeto util-linux destaca limitações após suspensão e retomada. Não trate a conversão como prova de horário exato; ao correlacionar eventos, confira o contexto da inicialização e outras fontes de registro.
Opções principais
| Opção | Uso |
|---|---|
--level=lista |
Filtra os níveis especificados; err,warn seleciona esses dois níveis. |
-T |
Mostra horários legíveis, sujeitos às limitações de conversão temporal. |
-H |
Usa apresentação para leitura humana e, por padrão, um paginador. |
-w |
Aguarda novas mensagens após mostrar as disponíveis; equivale a --follow. |
-k |
Seleciona mensagens do kernel. |
Algumas opções de dmesg alteram o estado do sistema. Em particular, -c, --read-clear imprime e depois limpa o buffer, enquanto -C, --clear o limpa. Não confunda c minúsculo com C maiúsculo e não use essas opções para uma consulta simples. As opções de leitura dos exemplos não exigem limpar registros.
Consultar registros de outras inicializações
Dmesg lê o buffer do kernel em execução. Em um sistema com journal do systemd, journalctl -k consulta as entradas de kernel coletadas no journal da inicialização atual por padrão. Para escolher entre as inicializações disponíveis, confira primeiro journalctl --list-boots.
A consulta journalctl -k -b -1 seleciona as mensagens de kernel da inicialização anterior disponível segundo a numeração do journal. Sua utilidade depende de esses registros terem sido coletados, retidos e estarem acessíveis. Se houver lacunas no histórico, não presuma que a lista contenha cada reinicialização real da máquina.
A documentação oficial de journalctl explica a seleção por boot e o filtro de mensagens de kernel. O journal e o buffer circular têm origens e políticas de retenção diferentes; nenhum comando recupera automaticamente um registro que já não esteja disponível na fonte consultada. Veja também o guia de journalctl em inglês para outras consultas.
Saída vazia, permissões e limites do ambiente
- Confira se dmesg existe e se a consulta sem filtro consegue ler o buffer.
- Leia a mensagem de erro. Acesso negado pode decorrer de restrições do kernel, como dmesg_restrict; confirme a política com o administrador autorizado.
- Se a leitura funcionar, reveja os níveis selecionados e a sequência completa antes de concluir algo sobre o problema.
- Para fatos antigos ou de outro boot, confira a lista de inicializações e a retenção dos registros no journal, quando esse serviço estiver disponível.
No ambiente de verificação disponível, Bash 5.3.9 do Git para Windows, dmesg e journalctl não foram encontrados. As consultas diretas retornaram 127. Os pipelines com less e tail retornaram 0, mas os estados dos componentes foram 127 para dmesg e 0 para o programa seguinte. Houve conferência adicional de sintaxe, sem leitura nativa de logs Linux, observação de eventos reais ou teste interativo do acompanhamento. Nenhum buffer foi limpo, nenhuma restrição foi alterada e a linha acima permanece ilustrativa.
Pergunta frequente
Dmesg e journalctl -k mostram a mesma fonte?
Não. Dmesg consulta o buffer circular do kernel, enquanto journalctl -k consulta entradas de kernel coletadas no journal. Os registros podem diferir por coleta, acesso, retenção e inicialização selecionada. Confira a fonte e o boot antes de comparar mensagens ou concluir que um evento não aconteceu.




