Tutoriel Linux

Dmesg no Linux: lê mensagens do kernel quando um disco ou dispositivo falha.

Débutant6 min de lecture

Um pen drive desaparece, uma placa de rede desconecta, um SSD apresenta mau funcionamento ou o computador exibe um erro logo após a inicialização? Antes de alterar a configuração aleatoriamente, quase sempre verifico as mensagens do kernel.

No Linux, dmesg Permite ler essas mensagens rapidamente. Não é uma ferramenta mágica, mas muitas vezes fornece a primeira pista útil: um erro de E/S, um dispositivo USB reiniciado, firmware ausente, um driver com problemas ou uma conexão de rede instável.

Neste guia, mostrarei como usar dmesg Em termos mais precisos, cruze-o com journalctl -kFiltre as linhas úteis e evite a falsa ideia de alterar uma opção do sistema antes de entender a mensagem.

O Tux inspeciona as mensagens do kernel do Linux relacionadas a um disco, um dispositivo USB e um servidor.
O comando dmesg geralmente fornece a primeira pista quando um disco, dispositivo USB ou interface de rede apresenta falha.

O que o dmesg realmente exibe

dmesg Exibe o buffer de mensagens do kernel do Linux. Em termos mais simples, você encontrará eventos de baixo nível ali: detecção de hardware, drivers, erros de disco, USB, rede, ACPI, firmware, memória, montagem de dispositivos, etc.

Em máquinas modernas, algumas dessas mensagens também são visíveis no log do systemd. Por isso, recomendo que você mantenha ambos os comandos à mão: dmesg para leitura rápida, journalctl -k Para uma leitura mais clara no registro do sistema.

dmesg

Em algumas distribuições, a leitura pode exigir privilégios de administrador. Se você receber um erro de permissões, tente novamente com sudo.

sudo dmesg

A página de manual do dmesg Ele detalha todas as opções. Para diagnósticos de rotina, alguns comandos já são mais do que suficientes.

Leia as últimas linhas sem se afogar.

A primeira coisa a fazer é não exibir 800 linhas de uma só vez. Quando um problema acabou de ocorrer, comece pelo final do log do kernel.

sudo dmesg -T | tail -n 80

A opção -T torna as datas mais legíveis. Observe que, embora esse formato seja conveniente para uma leitura rápida, ele não substitui uma análise completa dos jornais se você estiver comparando eventos muito específicos. Para isso, journalctl continua sendo mais confortável.

Você também pode exibir apenas avisos e erros:

sudo dmesg -T --level=err,warn

Se o comando não retornar nada, não é necessariamente um mau sinal. Significa simplesmente que o kernel não registrou nenhum erro ou aviso recente nesse buffer.

Filtrar um problema de USB, disco ou rede

A verdadeira economia de tempo acontece quando você usa filtros. Se você está procurando saber por que um pen drive não monta, por que um disco rígido está com defeito ou por que uma placa de rede está reiniciando, não leia tudo. Procure pelas palavras que correspondem ao hardware.

sudo dmesg -T | grep -iE 'usb|sda|sdb|nvme|ata|erro|falha|reset'

Para constar, as frases a que se deve estar atento são geralmente bastante autoexplicativas: Erro de E/S, reiniciar, comando falhou, blk_update_request, erro de leitura, erro de gravaçãoSe você vir esse tipo de mensagem repetidamente, não comece reescrevendo-a. /etc/fstabPrimeiro verifique o cabo, a caixa USB, a fonte de alimentação e, em seguida, o estado do disco.

Para um dispositivo USB, consulte os comandos já apresentados no guia. Portas USB no Linux ou aquele que está no montando uma chave USB. dmesg Diz o que o núcleo observa, mas lsusb, lsblk E descobri Ajudar a compreender o que foi efetivamente detectado e instalado.

lsblk -o NOME,TAMANHO,TIPO DE FS,RÓTULO,UUID,PONTOS DE MONTAGEM
descobri
lsusb

Para problemas de rede, procure pelo nome da interface ou termos como link, renomeado, firmware, tempo esgotado, abaixo, acimaSe o assunto se referir principalmente à escuta de portas TCP, mude para ss ou netstat, porque dmesg Não substitui um inventário de rede.

Acompanhe as mensagens enquanto conecta o equipamento.

Quando um dispositivo se desconecta intermitentemente, a maneira mais fácil é monitorar as mensagens em tempo real. Abra um terminal, execute o comando e, em seguida, conecte o disco, a unidade USB ou o adaptador de rede.

sudo dmesg -wH

-c acompanhe novas mensagens. -H Isso torna a saída mais legível. Se preferir permanecer no log do systemd, use:

sudo journalctl -k -f

A página de manual do jornalctl Isso é útil se você quiser refinar a busca por inicialização, prioridade ou unidade. Para uma falha de hardware simples, o monitoramento em tempo real geralmente é suficiente para verificar se o kernel detecta a ramificação e, em seguida, o erro.

Compare com o journalctl para obter informações sobre a última inicialização.

dmesg É rápido, mas não paro por aí se o problema afetar um servidor ou reaparecer após uma reinicialização. O log do systemd permite reler as mensagens do kernel da inicialização atual, com seus próprios filtros.

sudo journalctl -k -b --no-pager
sudo journalctl -k -b -p warning..alert --no-pager

O primeiro comando exibe as mensagens do kernel do processo de inicialização atual. O segundo mantém apenas avisos, erros e alertas. Isso é útil após uma reinicialização em que uma montagem falhou, quando uma interface de rede não está montada corretamente ou quando um driver relata um problema na inicialização.

Se você acabou de modificar /etc/fstabNão reinicie apenas para ver o que acontece. Teste a montagem primeiro e verifique se há erros. O guia sobre fstab no Linux Este ponto precisa ser explicado em detalhes, pois uma conexão defeituosa pode bloquear a inicialização mais rápido do que você imagina.

sudo mount -a
descobri
sudo journalctl -k -b -p warning..alert --no-pager

Saber quando a mensagem indica um problema real de hardware

Uma linha isolada em dmesg Isso nem sempre é suficiente para tirar uma conclusão. Um dispositivo USB pode se reiniciar sozinho uma vez sem que isso seja grave. No entanto, um erro que se repete a cada cópia, uma unidade que alterna entre desconectar e reconectar, ou erros repetidos de E/S devem ser levados a sério.

Neste caso, realizo três verificações antes de alterar a configuração:

  • Se o dispositivo for externo, troque o cabo, a porta USB ou a fonte de alimentação;
  • Verifique se o disco está corretamente identificado com lsblk E blkid ;
  • Verifique o status SMART para saber se é um disco rígido ou um SSD.
lsblk -o NOME,TAMANHO,MODELO,SERIAL,TIPO DE FS,PONTOS DE MONTAGEM
sudo blkid
sudo smartctl -a /dev/sdX

Substituir /dev/sdX pelo disco correto. Não copie este comando cegamente para uma máquina com vários discos. Se você não tiver certeza, pare em lsblk e identifique o modelo, o tamanho e o ponto de montagem antes de prosseguir.

Antes de corrigir, anote o erro exato.

O melhor uso de dmesgO objetivo não é encontrar uma solução mágica. É capturar um erro específico antes de tomar qualquer ação. Copie algumas linhas da mensagem, anote a hora, o dispositivo envolvido e a ação que desencadeia o problema.

sudo dmesg -T | tail -n 120 > core-diagnostic.txt
sudo journalctl -k -b -p warning..alert --no-pager >> core-diagnostic.txt

Só então você poderá decidir: qual cabo substituir, qual disco fazer backup, qual driver verificar, qual regra do fstab corrigir, qual firmware instalar ou qual serviço monitorar. Essa etapa parece básica, mas evita muitos diagnósticos absurdos, principalmente para falhas intermitentes.

Se você estiver administrando uma máquina remota, tenha ainda mais cuidado. Um erro de disco ou de rede detectado no kernel pode eventualmente bloquear seu acesso. Mantenha uma sessão aberta, forneça acesso ao console, se possível, e não reinicie o sistema até entender o que o kernel está tentando lhe dizer.