¿Qué es dmesg?
dmesg es la abreviatura de 'display message' o 'driver message', y muestra los mensajes almacenados en el búfer de anillo (Ring Buffer) del kernel de Linux. Muestra cronológicamente cómo se ha reconocido el hardware, cómo se han cargado los controladores o qué errores han ocurrido desde el arranque del sistema hasta el momento actual.
Funciones y Usos Clave
dmesg se utiliza para diagnosticar lo que ocurre en el nivel más bajo del sistema (el kernel).
- Verificar mensajes de arranque: Muestra todos los mensajes del kernel emitidos al iniciar el sistema.
- Diagnóstico de hardware: Verifica los registros cuando se conecta o desconecta nuevo hardware (USB, disco, etc.).
- Errores de controlador: Rastrea la causa de fallos en la carga de controladores o errores a nivel de kernel (Kernel Panic).
- Búfer de anillo: El tamaño del búfer es fijo, por lo que los registros antiguos son sobrescritos por los nuevos.
Opciones Principales (Shell)
dmesg a menudo se usa en combinación con otros comandos (grep, less) mediante una tubería (|), pero también tiene sus propias opciones útiles.
1. 출력 형식 및 시간
2. 필터링 및 실시간 모니터링
3. 버퍼/콘솔 제어 (주의 필요)
Comando generado:
Combina los comandos.
Descripción:
`dmesg` Ejecutando el comando.
Combina las opciones anteriores para ejecutar virtualmente los comandos junto con la IA.
Ejemplos de Escenarios de Uso (Shell)
dmesg se usa a menudo con grep para filtrar solo la información deseada.
Ver todos los mensajes (paginado)
dmesg | less
Uso más básico. Desplázate cómodamente con less.
Ver nuevos mensajes en tiempo real (formato legible)
dmesg -wH
Combina -w (tiempo real) y -H (hora legible para humanos).
Filtrar solo mensajes relacionados con USB
dmesg | grep -i usb
La opción -i de grep ignora mayúsculas y minúsculas.
Filtrar mensajes relacionados con discos (SATA/NVMe)
dmesg | grep -iE 'sd[a-z]|nvme'
Usa grep -E (expresiones regulares extendidas) para buscar logs que contengan 'sd[a-z]' o 'nvme'.
Filtrar solo errores (Error) o advertencias (Warn)
dmesg -H -l err,warn
Especifica el nivel de log con la opción -l.
Ver solo los últimos 10 mensajes
dmesg | tail -n 10
Combina con tail para verificar rápidamente solo los mensajes recientes.
Ver incluyendo etiquetas facility/level
dmesg -xT | less
La opción -x decodifica facility/level para facilitar la comprensión.
Guardar logs en un archivo
dmesg -T > ~/dmesg-$(date +%F-%H%M).log
Guarda todo el dmesg inmediatamente después del arranque.
Instalación
dmesg está incluido en el paquete util-linux y viene preinstalado en la mayoría de las distribuciones de Linux.
Instalado por defecto
No requiere instalación adicional. Si no está presente, instale el paquete 'util-linux' de su distribución.
Consejos y Advertencias
dmesg vs journalctl
- Entorno systemd: En sistemas systemd modernos, es posible ver logs del sistema más allá del nivel de dmesg usando 'journalctl -k' (logs del kernel) o 'journalctl -b' (logs de este arranque).
- Formato de hora: El tiempo en la salida predeterminada de dmesg es [tiempo transcurrido (segundos) desde el arranque]. Para ver la hora real, use las opciones '-H' o '-T'.
- Sobreescritura del búfer: Debido a la naturaleza del búfer de anillo, los mensajes antiguos pueden desaparecer. Si necesita preservar los logs iniciales del arranque, verifíquelos con 'journalctl -b 0' o guarde la salida de dmesg en un archivo.
- Permisos/Seguridad: Algunas distribuciones restringen el acceso de usuarios normales a dmesg mediante '/proc/sys/kernel/dmesg_restrict=1'. En este caso, use 'sudo dmesg' o 'sudo journalctl -k'.
- Borrar logs (-c, -C): 'dmesg -c' y '-C' son útiles para depurar, pero una vez borrados, los logs no se pueden recuperar. Úselos con precaución en entornos de producción.