Uso del comando dmesg en linux

Uso del comando dmesg en linux.

El comando dmesg (diagnostic message / mensajes de diagnóstico), es una herramienta exclusiva de sistemas basados en Unix con la capacidad de listar los avisos temporales generados por el kernel.

Estos avisos se guardan en lo que se conoce como buffer, y contiene los mensajes más importantes que se generaron al iniciar el sistema (también los cambios durante su funcionamiento), por ejemplo de los drivers y el hardware. Estos (normalmente) se guardan mediante «syslog», siendo dmesg la herramienta con capacidad de leer e imprimir (en formato humano) los avisos del kernel.

Poder examinar los mensajes de arranque del núcleo, te ayudaran a solucionar problemas relacionados con el hardware. En este articulo vemos los conceptos principales que debes conocer de «dmesg».

 

Uso del comando dmesg en linux

Uso básico de dmesg

La sintaxis de dmesg es muy simple.

dmesg [OPCIONES]

No es obligatorio que apliques opciones, lo puedes ejecutar tal cual.
dmesg

Normalmente esta herramienta se ejecuta sobre cualquier usuario, si por un extraño caso no te permite su uso en usuarios sin permisos, recibirás un mensaje similar a:
dmesg: read kernel buffer failed: Operation not permitted

El error anterior se produce por el ajuste del parámetro «kernel.dmesg_restrict». Solucionamos el problemas ajustando los privilegios.
sudo sysctl -w kernel.dmesg_restrict=0

La salida impresa del comando puedes ser muy larga, y esto dificulta su lectura. Para ver el archivo linea por linea…
dmesg --color=always | more

La herramienta dmesg nos permite filtrar los mensajes por dispositivo. En nuestro caso y a modo de ejemplo, extraemos un pendrive usb y un raton usb, pasados unos segundos los insertamos de nuevo.
dmesg | grep -i usb

ejemplo…

sololinux ~ # dmesg | grep -i usb
[ 5265.936151]  usb 2-2: USB disconnect, device number 3
[ 5292.948110]  usb 3-1: new low-speed USB device number 2 using uhci_hcd
[ 5293.144136]  usb 3-1: New USB device found, idVendor=046d, idProduct=c077
[ 5293.144142]  usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 5293.144146]  usb 3-1: Product: USB Optical Mouse
[ 5293.144149]  usb 3-1: Manufacturer: Logitech
[ 5293.159907]  input: Logitech USB Optical Mouse as /devices/pci0000:00/0000:00:1d.1/usb3/3-1/3-1:1.0/0003:046D:C077.0004/input/input14
[ 5293.160911]  hid-generic 0003:046D:C077.0004: input,hidraw2: USB HID v1.11 Mouse [Logitech USB Optical Mouse] on usb-0000:00:1d.1-1/input0
[ 5300.036089]  usb 1-2: new high-speed USB device number 5 using ehci-pci
[ 5300.198040]  usb 1-2: New USB device found, idVendor=13fe, idProduct=4200
[ 5300.198046]  usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 5300.198050]  usb 1-2: Product: USB DISK 2.0
[ 5300.198054]  usb 1-2: SerialNumber: C900589889F91731
[ 5300.322756]  usb-storage 1-2:1.0: USB Mass Storage device detected
[ 5300.333790]  scsi host2: usb-storage 1-2:1.0
[ 5300.334384] usbcore: registered new interface driver usb-storage
[ 5300.353236]  usbcore: registered new interface driver uas
[ 5301.342373]  scsi 2:0:0:0: Direct-Access      USB DISK 2.0      PMAP PQ: 0 ANSI: 6

 

Formatear la salida de dmesg

Dmesg nos permite aplicar opciones de formateo para que visualmente sea más comprensible. La más utilizada es la salida para humanos, opción -H.

dmesg -H

Para imprimir los tiempos…
dmesg -T

ejemplo…

[lun feb 10 08:06:14 2020] usb 1-2: new high-speed USB device number 5 using ehci-pci
[lun feb 10 08:06:14 2020] usb 1-2: New USB device found, idVendor=13fe, idProduct=4200
[lun feb 10 08:06:14 2020] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3

Las marcas de tiempo admiten varios formatos al hacer uso de «–time-format». Se admiten los siguientes:

  • ctime
  • reltime
  • notime
  • delta
  • iso

En el ejemplo aplicamos «iso».

dmesg --time-format=iso

salida en iso…

2020-02-10T08:05:39,936151+0200 usb 2-2: USB disconnect, device number 3
2020-02-10T08:06:06,948110+0200 usb 3-1: new low-speed USB device number 2 using uhci_hcd
2020-02-10T08:06:07,144136+0200 usb 3-1: New USB device found, idVendor=046d, idProduct=c077

Comando dmesg en tiempo real.

dmesg -w

Aplicando varias opciones a la vez.
dmesg -H -T

 
Filtrar la salida de dmesg

Se permite filtrar los mensajes por quien los genero, en este caso las opciones son las siguientes:

  • user – mensajes a nivel de usuario
  • kern – mensajes del kernel
  • daemon – demonios del sistema
  • auth – mensajes de seguridad y permisos
  • mail – sistema de correos
  • lpr – impresoras en línea
  • news – novedades de la red
  • syslog – avisos internos de syslogd

Para lograr el objetivo utilizamos «-f», que ademas  nos permite especificar varios filtros (si es necesario).

# mensajes de usuario
dmesg -f user

# mensajes de usuario, kernel y demonios
dmesg -f user,kern,daemon

Otra opción de filtrado es por importancia del aviso, vemos las opciones por orden de importancia.
  • emerg – error critico del sistema
  • alert – debes solucionar el error rápidamente o el sistema entrara en modo «emerg»
  • crit – en entorno esta en condiciones críticas
  • err – errores
  • warn – advertencias
  • notice – el sistema es normal pero pon atención a este punto
  • info – nota informativa
  • debug – avisos de depuración

Para lograr el objetivo utilizamos «-l», que ademas  nos permite especificar varios filtros (si es necesario).

# mensajes de emergencia
dmesg -l emerg

# mensajes de emergencia, de alerta y críticos
dmesg -l emerg,alert,crit

 
Borrar los mensajes del buffer

A diferencia de la lectura de mensajes, para borrar todos los mensajes debes ser root o usuario con privilegios. Antes de vaciar todos los avisos, existe la opción de imprimir en pantalla y borrar, así los borras y visualizas a la vez.

sudo dmesg -c

Si quieres borrar todo sin imprimir nada…
sudo dmesg -C

Como ultimo apunte del articulo, dmesg también permite guardar los avisos en un archivo antes de borrarlo por completo.
dmesg > dmesg_messages

Existen más opciones que puedes ver en su manual al ejecutar el siguiente comando.
man dmesg

 

Canales de Telegram: Canal SoloLinux – Canal SoloWordpress

Espero que este articulo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales.

 

Agregar comentario