En este momento estás viendo dmesg «Diagnostic Message»

dmesg «Diagnostic Message»

Uso del comando dmesg con ejemplos

Diagnostic Message «dmesg», es un comando incluido en los sistemas UNIX, para listar el buffer de mensajes del núcleo del sistema operativo «kernel». En este buffer tenemos la información de arranque nuestro sistema y mensajes del núcleo, información necesaria para detectar posibles errores en nuestro sistema y en el Hardware.

A pesar de la fiabilidad e integridad de las distribuciones GNU/Linux, en todo sistema informático, puede producirse un fallo en alguno de sus componentes. Con «dmesg», no perderemos tiempo comprobando, uno por uno todos los componentes, usando un comando que simplificará este proceso.

Sumario

  • Definición del comando
  • Uso del comando dmesg
  • Opciones del comando con ejemplos
  • Filtros del comando con ejemplos

Definición del comando

Cuando iniciamos un sistema GNU/Linux, en el arranque del sistema, el kernel identifica los dispositivos hardware disponibles en el sistema «POST». Conforme se van detectando los dispositivos, se generan unos registros que quedan almacenados en un buffer, llamado de anillo, del kernel. Este buffer, también conocido como buffer cíclico o circular, es específico para administrar el registro interno del Kernel. Un búffer de anillo es un espacio de memoria, de tamaño fijo, en el cual cualquier dato nuevo agregado sobrescribirá los datos más antiguos allí alojados, según esté configurado.

Como en cualquier registro, en este se guardan los errores que se han producido, lo que es importante conocer, ya que, en alguna ocasión, puede salvar nuestro sistema. Con el comando dmesg además de ver todo el registro, podrás identificar los errores por tipo, algo especialmente útil para cualquier administrador de sistemas. Ten en cuenta que durante el arranque del sistema los demonios de registro como «syslogd» o «rsyslogd» aún no están en funcionamiento y sin «dmesg», perderíamos datos que pueden ser muy importantes.

Uso del comando dmesg

El comando lo tienes instalado en todas las distribuciones, por lo que no es necesario hacer nada previamente. Tienes que utilizar sudo antes de cada comando o escalar privilegios con «sudo su».

La sintaxis es como sigue:

dmesg [options]

Opciones del comando con ejemplos

Las opciones más importantes

  • –clear, –read-clear, –console-on, –console-off, y –con‐sole-level. Estas opciones son excluyentes entre sí.
  • -C, –clear Borra el buffer de anillo.
  • -c, –read-clear Borra el buffer de anillo después de haberlo impreso.
  • -H, –human Muestra los datos inteligibles para humanos
  • -k, –kernel Imprime los mensages del kernel
  • -s, –buffer-size size Usar un tamaño de búffer determinado para almacenar los registros.
  • -w, –follow Sigue monitorizando el sistema una vez en funcionamiento

Por ejemplo, si quieres aumentar o reducir el tamaño del buffer de anillo, puedes hacerlo con la siguiente sintaxis.

dmesg -s 1024

También tienes la opción de imprimir el buffer y, posteriormente borrar el ciclo del anillo.

dmesg -c

Para ver todos los datos del registro ejecutamos el siguiente comando, paginando su salida.

dmesg | less
o
dmesg | more
Salida de dmesg paginada

Sales de la pantalla con «q».

Como vemos en la captura anterior, la salida nos muestra toda la información, imprime el buffer al completo. Para analizarla mejor podemos aplicar filtros, como veremos a continuación.

Podemos pedir que imprima la salida sin formato

dsmeg -r

O que la imprima legible para los humanos

dmesg -H
Salida dmesg -H

Para ver los mensajes «dmesg» en tiempo real

dmesg --follow

Para parar el proceso «Ctrl+c».

Filtros del comando con ejemplos

Cuando encontramos errores, lo recomendable es aplicar los filtros, llamados también niveles, que incorpora el comando para discriminar lo que nos puede dificultar la identificación de errores o posibles problemas. De este modo será más fácil identificar el error. Los filtros disponibles son los siguientes:

  • emerg – Error que impide el funcionamiento del sistema correctamente.
  • alert – Error que requiere intervención inmediata.
  • crit – Sistema bajo condiciones críticas.
  • err – Sistema bajo condiciones de error.
  • warn – Advertencias del sistema.
  • debug – Advertencias de depuración.
  • notice – Condiciones normales, pero debes prestar atención al aviso.
  • info – Información general.

Para usar estos filtros lo haremos con la siguiente sintaxis.

dmesg --level=alert,[filtro]

Unos ejemplos

Para ver errores que impiden el funcionamiento del sistema

dmesg --level=alert,emerg

Pero si queremos ver errores que requieren intervención inmediata.

dmesg --level=alert,alert

Para ver los errores que se han producido.

dmesg --level=alert,err

Para ver las alertas y advertencias críticas

dmesg --level=alert,crit

Ver errores críticos

dmesg --level=alert,warn

Comprobar advertencias del sistema

dmesg --level=alert,debug

Ver avisos a los que prestar atención

dmesg --level=alert,notice

Aquí tienes unos ejemplos.

Varios ejemplos de uso del comando

Para ver información general.

dmesg --level=alert,info
Información del sistema con dmesg

Podemos, por ejemplo, buscar las referencias a dispositivos de almacenamiento en los mensajes del kernel

dmesg | grep sda
Dispositivo almacenamiento sda

O las referencias a dispositivos USB

dmesg | grep -i usb

Para consultar los mensajes relacionados con la tarjeta de red

dmesg | grep -i enp0s3
Datos tarjeta de red

Para ver todas las terminales en ejecución

dmesg | grep -i tty
Terminales en ejecución

Incluso podemos ver datos de la memoria principal «RAM»

dmesg | grep -i memory
Memoria principal

Otra opción es buscar los errores en la salida con grep

dmesg | grep -i error
Errores

Y monitorizar el sistema para que nos vaya mostrando las últimas 20 entradas, con

watch "dmesg | tail -20"
Monitorización con dmesg

Para parar el proceso «Ctrl+c».

Si quieres consultar todas las opciones lo puedes hacer en el manual integrado del comando

man dmesg
Manual de dmesg

En el directorio /var/log/ tienes los logs o registros del sistema por si necesitas seguir explorando.

Como puedes ver «dmesg» es una herramienta muy útil y fácil de usar cuando necesitamos identificar algún problema a nivel de hardware, que no siempre son sencillos de detectar, para un correcto funcionamiento de tu escritorio o servidor.

Si tienes algún comentario que hacer sobre este artículo, al pie del post tienes un formulario para hacerlo.

Si quieres contactar conmigo por cualquier otro asunto relacionado con el sitio, en la página de contacto, tienes un formulario más adecuado.

Y para suscribirte y recibir las novedades publicadas, tienes un enlace en el pie de la página o desde aquí mismo.

Deja una respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.