O que é o dmesg?
O dmesg exibe o buffer de mensagens do kernel -- o ring buffer. Aqui ficam registradas mensagens de boot, detecção de hardware, erros de drivers e eventos do kernel.
dmesg básico
dmesg | head -20
[ 0.000000] Linux version 6.8.0-45-generic (buildd@lcy02-amd64-080)
[ 0.000000] Command line: BOOT_IMAGE=/vmlinuz-6.8.0-45-generic root=/dev/sda1 ro quiet
[ 0.000000] BIOS-provided physical RAM map:
[ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
[ 0.031284] CPU: Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz
[ 0.031284] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
[ 0.045102] Memory: 16330480K/16777216K available
Os números entre colchetes são segundos desde o boot.
dmesg -T: timestamps legíveis
O formato padrão mostra segundos desde o boot. Para ver data e hora reais:
dmesg -T | tail -10
[Sex Mar 27 09:15:22 2026] usb 2-1: new high-speed USB device number 3 using xhci_hcd
[Sex Mar 27 09:15:22 2026] usb 2-1: New USB device found, idVendor=0781, idProduct=5567
[Sex Mar 27 09:15:22 2026] usb-storage 2-1:1.0: USB Mass Storage device detected
[Sex Mar 27 09:15:23 2026] sd 2:0:0:0: [sdb] 30031872 512-byte logical blocks: (15.4 GB/14.3 GiB)
-T pode apresentar timestamps imprecisos após suspend/resume. Use journalctl -k para timestamps confiáveis.dmesg --level: filtrar por severidade
O kernel classifica mensagens em níveis de severidade:
| Nível | Nome | Descrição |
|---|---|---|
| 0 | emerg | Sistema inutilizável |
| 1 | alert | Ação imediata necessária |
| 2 | crit | Condição crítica |
| 3 | err | Erro |
| 4 | warn | Aviso |
| 5 | notice | Condição normal significativa |
| 6 | info | Informacional |
| 7 | debug | Debug |
# Apenas erros
dmesg --level=err
[ 2.451023] ACPI BIOS Error (bug): Could not resolve symbol...
[ 45.891204] EXT4-fs error (device sda1): ext4_lookup:1855: inode #131073
# Erros e avisos juntos
dmesg --level=err,warn
# Tudo até nível warn (0-4)
dmesg -l 0..4
Filtrando por dispositivo ou subsistema
Use grep para filtrar mensagens de um dispositivo específico:
# Mensagens sobre USB
dmesg -T | grep -i usb
# Mensagens sobre discos
dmesg -T | grep -i "sd[a-z]"
[Sex Mar 27 08:00:05 2026] sd 0:0:0:0: [sda] 976773168 512-byte logical blocks: (500 GB/465 GiB)
[Sex Mar 27 08:00:05 2026] sd 0:0:0:0: [sda] Write cache: enabled
[Sex Mar 27 08:00:05 2026] sda: sda1 sda2 sda3
# Mensagens de rede
dmesg -T | grep -iE "eth|ens|enp|wlan|net"
Filtrando por facilidade
# Apenas mensagens do kernel (sem userspace)
dmesg --facility=kern
Monitorando em tempo real
Para acompanhar novas mensagens do kernel (útil ao plugar dispositivos):
dmesg -Tw
O -w (watch) mantém o dmesg aberto esperando novas mensagens. O -T formata os timestamps. Pressione Ctrl+C para sair.
journalctl -k: alternativa moderna
O journalctl -k mostra as mesmas mensagens do kernel, mas com timestamps precisos e integração com o journal do systemd:
# Mensagens do kernel do boot atual
journalctl -k
# Mensagens do kernel do boot anterior
journalctl -k -b -1
# Apenas erros do kernel
journalctl -k -p err
# Seguir em tempo real (equivale a dmesg -Tw)
journalctl -kf
dmesg -Tw em um terminal e conecte/desconecte o dispositivo. As mensagens aparecem instantaneamente.Limpar o buffer
Em sessões de diagnóstico, pode ser útil limpar o buffer para ver apenas mensagens novas:
# Limpar o ring buffer
sudo dmesg -C
# Agora apenas novas mensagens aparecerão
dmesg
Resumo dos comandos
# Mensagens do kernel com timestamps legíveis
dmesg -T
# Apenas erros
dmesg --level=err
# Erros e avisos
dmesg --level=err,warn
# Filtrar por dispositivo
dmesg -T | grep -i usb
# Monitorar em tempo real
dmesg -Tw
# Alternativa via journalctl
journalctl -k
journalctl -k -p err
journalctl -kf