Cómo utilizar el comando dmesg en Linux

Puntos clave

  • El comando dmesg le permite revisar los mensajes almacenados en el búfer circular de Linux, lo que proporciona información sobre errores de hardware y problemas de inicio.
  • Puede personalizar el comando dmesg eliminando la necesidad de sudo, forzando la salida de color, usando marcas de tiempo legibles por humanos, viendo eventos en vivo, recuperando los mensajes más recientes, buscando términos específicos y filtrando por niveles de registro o categorías de estructura.

EL dmesg El comando le permite adentrarse en el mundo oculto de los procesos de inicio de Linux. Examine y supervise los mensajes del controlador y del dispositivo de hardware desde el búfer de anillo del kernel con el compañero de resolución de problemas.

→ Índice de contenidos
  • Cómo funciona el búfer circular de Linux
  • ¿Qué es el comando dmesg?
  • Eliminando la necesidad de sudo
  • Forzar salida de color
  • Marcas de tiempo humanas
  • Marcas de tiempo legibles por humanos con dmesg
  • Mira eventos en vivo con dmesg
  • Recuperar los últimos diez mensajes
  • Buscar términos específicos
  • Usando niveles de registro
  • Las categorías de estructuras.
  • Combinación de estructura y nivel.
  • Eso es genial, pero ¿por qué?
  • Cómo funciona el búfer circular de Linux

    En las computadoras Linux y tipo Unix, el inicio y el inicio son dos fases distintas de la secuencia de eventos que ocurren cuando se enciende la computadora.

    Los procesos de arranque (BIOS o UEFI, MBR y GRUB) llevan la inicialización del sistema hasta el punto en que el kernel se carga en la memoria y se conecta al disco ram inicial (initrd o initramfs) y se inicia systemd.

    Luego, los procesos de arranque toman el relevo y completan la inicialización del sistema operativo. En las primeras etapas de inicialización, los demonios de registro como syslogd o rsyslogd aún no están en funcionamiento. Para evitar perder mensajes de error y advertencias importantes en esta fase de inicialización, el kernel contiene un búfer en anillo que utiliza como almacén de mensajes.

    Un búfer circular es un espacio de memoria reservado para mensajes. Es de diseño simple y de tamaño fijo. Cuando está lleno, los mensajes más nuevos sobrescriben los más antiguos. Conceptualmente se puede considerar como un "amortiguador circular".

    El búfer de anillo del kernel almacena información como mensajes de inicialización del controlador de dispositivo, mensajes del hardware y mensajes de los módulos del kernel. Debido a que contiene estos mensajes de inicio de bajo nivel, el búfer circular es un buen lugar para iniciar una investigación sobre fallas de hardware u otros problemas de inicio.

    Aquí es donde entra en juego el comando dmesg.

    ¿Qué es el comando dmesg?

    EL dmesg El comando le permite revisar los mensajes almacenados en el búfer circular. De forma predeterminada, debe utilizar sudo usar dmesg.

    sudo dmesg

    La ventana del terminal muestra todos los mensajes en el búfer circular.

    Salida de sudo dmesg en una ventana de terminal

    Fue un diluvio. Evidentemente lo que tenemos que hacer es transmitirlo. less:

    sudo dmesg | less

    sudo dmesg |  menos en una ventana de terminal

    Ahora podemos desplazarnos por los mensajes buscando los elementos que nos interesen.

    salida de dmesg en less en una ventana de terminal

    Puede utilizar la función de búsqueda dentro less para identificar y resaltar los elementos y términos que le interesan. Inicie la función de búsqueda presionando la tecla de barra diagonal "/" less.

    Eliminando la necesidad de sudo

    Si quieres evitar tener que usarlo sudo cada vez que lo usas dmesg, puedes usar este comando. Pero ojo: permite que cualquier persona con una cuenta de usuario pueda utilizar tu ordenador dmesg sin tener que usarlo sudo.

    sudo sysctl -w kernel.dmesg_restrict=0

    sudo sysctl -w kernel.dmesg_restrict=0 en una ventana de terminal

    Forzar salida de color

    Por defecto, dmesg probablemente estará configurado para producir resultados en color. Si no es así, puedes decirlo. dmesg para colorear su salida usando el comando -L opción (color).

    sudo dmesg -L

    sudo dmesg -L en una ventana de terminal

    Para forzar dmesg Para configurar siempre una pantalla en color, use este comando:

    sudo dmesg --color=always

    sudo dmesg --color=siempre en una ventana de terminal

    Marcas de tiempo humanas

    Por defecto, dmesg utilice una notación de tiempo de segundos y nanosegundos desde el inicio del kernel. Para hacerlo en un formato más fácil de usar, utilice el -H opción (humana).

    sudo dmesg -H

    sudo dmesg -H en una ventana de terminal

    Esto hace que sucedan dos cosas.

    salida de sudo dmesg -H en una ventana de terminal

    • La salida aparece automáticamente en less.
    • Las marcas de tiempo muestran una marca de tiempo con la fecha y la hora, con una resolución de un minuto. Los mensajes que ocurrieron en cada minuto están etiquetados con segundos y nanosegundos desde el comienzo de ese minuto.

    Marcas de tiempo legibles por humanos con dmesg

    Si no necesita una precisión de nanosegundos, pero desea que las marcas de tiempo sean más fáciles de leer que las predeterminadas, use la opción -T (legible por humanos). (Hay un poco de confusión. -H es la opción "humana", -T es la opción "legible por humanos").

    sudo dmesg -T

    sudo dmesg -T en una ventana de terminal

    Las marcas de tiempo aparecen como fechas y horas estándar, pero la resolución se reduce a un minuto.

    salida de sudo dmesg -T en una ventana de terminal

    Todo lo que pasó en un solo minuto tiene la misma marca de tiempo. Si lo único que te importa es la secuencia de eventos, esto es bastante bueno. Además, tenga en cuenta que volverá al símbolo del sistema. Esta opción no se llama automáticamente. less.

    Mira eventos en vivo con dmesg

    Para ver los mensajes a medida que llegan al búfer de anillo del kernel, use el --follow (esperar mensajes) opción. Esa frase puede parecer un poco extraña. Si el búfer en anillo se utiliza para almacenar mensajes de eventos que ocurren durante la secuencia de inicio, ¿cómo pueden los mensajes en vivo ingresar al búfer en anillo una vez que la computadora está en funcionamiento?

    Cualquier cosa que provoque un cambio en el hardware conectado a su computadora hará que los mensajes se envíen al búfer circular del núcleo. Actualice o agregue un módulo del kernel y verá mensajes del búfer circular relacionados con esos cambios. Si conecta una unidad USB o conecta o desconecta un dispositivo Bluetooth, verá mensajes en el archivo dmesg producción. El hardware virtual también hará que aparezcan nuevos mensajes en el búfer circular. Inicie una máquina virtual y verá llegar nueva información al búfer circular.

    sudo dmesg --follow

    sudo dmesg --follow en una ventana de terminal

    Tenga en cuenta que no volverá al símbolo del sistema. Cuando aparecen nuevos mensajes, se muestran mediante dmesg en la parte inferior de la ventana de la terminal.

    Salida desde la ventana de terminal sudo dmesg --follow na

    Montar un disco CD-ROM también se considera un cambio, porque ha insertado el contenido del disco CD-ROM en el árbol de directorios.

    Mensajes del búfer de anillo dmesg como resultado del montaje de un disco CD-ROM

    Para salir de la transmisión en vivo, presione Ctrl+C.

    Recuperar los últimos diez mensajes

    Utilice el comando tail para recuperar los últimos diez mensajes del búfer de anillo del kernel. Por supuesto, puedes recuperar cualquier cantidad de mensajes. Diez es sólo nuestro ejemplo.

    sudo dmesg | last -10

    sudo dmesg |  último -10 en una ventana de terminal

    Los últimos diez mensajes se recuperan y se enumeran en la ventana del terminal.

    Salida de sudo dmsesg |  cola -10 en una ventana de terminal

    Buscar términos específicos

    Salida de tubería de dmesg A través de grep para buscar cadenas o patrones particulares. Aquí estamos usando el -i (ignorar mayúsculas y minúsculas) para que se ignoren las mayúsculas y minúsculas de las cadenas coincidentes. nuestros resultados incluirán "usb" y "USB" y cualquier otra combinación de letras minúsculas y mayúsculas.

    sudo dmesg | grep -i usb

    sudo dmesg |  grep -i usb en una ventana de terminal

    Los resultados de búsqueda resaltados están en mayúsculas y minúsculas.

    Resultados de búsqueda que muestran resultados en mayúsculas y minúsculas en una ventana de terminal

    Podemos aislar mensajes que contengan referencias al primer disco duro SCSI del sistema. sda. (De hecho, sda También se utiliza hoy en día para el primer disco duro SATA y para unidades USB).

    sudo dmesg | grep -i sda

    sudo dmesg |  grep -i sda en una ventana de terminal

    Todas las publicaciones que mencionan sda se recuperan y enumeran en la ventana del terminal.

    salida de sudo dmesg |  grep -i sda en una ventana de terminal

    Para producir grep buscar varios términos al mismo tiempo, utilice el -E Opción (extender expresión regular). Debe proporcionar los términos de búsqueda dentro de una cadena entrecomillada con barra vertical "|" delimitadores entre términos de búsqueda:

    sudo dmesg | grep -E "memory|tty|dma"

    sudo dmesg |  grep-E

    Cualquier mensaje que mencione cualquiera de los términos de búsqueda aparecerá en la ventana del terminal.

    salida de sudo dmesg |  grep-E

    Usando niveles de registro

    Cada mensaje grabado en el búfer circular del núcleo tiene un nivel asociado. El nivel representa la importancia de la información en el mensaje. Los niveles son:

    • emergente: El sistema no se puede utilizar.
    • alerta: Se deben tomar medidas de inmediato.
    • crítico: Condiciones críticas.
    • cometer errores: Condiciones de error.
    • aconsejar: Condiciones de advertencia.
    • yo notifico: Condiciones normales pero significativas.
    • información: Informativo.
    • depurar: mensajes de nivel de depuración.

    Podemos hacer dmesg extraer mensajes que coincidan con un nivel particular usando el comando -l (nivel) y pasando el nombre del nivel como parámetro de línea de comando. Para ver sólo mensajes de nivel "informativo", utilice este comando:

    sudo dmesg -l info

    sudo dmesg -l info en una ventana de terminal

    Todos los mensajes enumerados son mensajes informativos. No contienen errores ni advertencias, solo notificaciones útiles.

    Salida de sudo dmesg -l info a una ventana de terminal

    Combine dos o más niveles de registro en un comando para recuperar mensajes de diferentes niveles de registro:

    sudo dmesg -l debug,notice

    sudo dmesg -l debug, advertencia en una ventana de terminal

    la salida de dmesg es una combinación de mensajes de cada nivel de registro:

    Salida de sudo dmesg -l debug, advertencia en una ventana de terminal

    Las categorías de estructuras.

    EL dmesg Los mensajes se agrupan en categorías llamadas "estructuras". La lista de instalaciones es:

    • avellana: Mensajes del núcleo.
    • usuario: Mensajes a nivel de usuario.
    • correo: Sistema de correo.
    • demonio: demonios del sistema.
    • aut: Mensajes de seguridad/autorización.
    • registro del sistema: Mensajes internos de syslogd.
    • lpr: subsistema de impresora de líneas.
    • noticias: Subsistema de noticias de la red.

    Podemos preguntar dmesg para filtrar la salida para mostrar solo mensajes en una estructura específica. Para hacer esto, necesitamos usar el -f opción (estructura):

    sudo dmesg -f daemon

    sudo dmesg -f daemon en una ventana de terminal

    dmesg enumera todos los mensajes relacionados con el demonio en la ventana del terminal.

    salida del demonio sudo dmesg -f en una ventana de terminal

    Como hicimos con los niveles, podemos preguntar dmesg para enumerar mensajes de múltiples instalaciones al mismo tiempo:

    sudo dmesg -f syslog, daemon

    sudo dmesg -f syslog, demonio en una ventana de terminal

    El resultado es una combinación de mensajes de registro de syslog y daemon.

    salida de sudo dmesg -f syslog daemon en una ventana de terminal

    Combinación de estructura y nivel.

    EL -x La opción (decodificar) representa dmesg muestra la estructura y el nivel como prefijos legibles por humanos en cada línea.

    sudo dmesg -x

    sudo dmesg -x en una ventana de terminal

    La estructura y el nivel se pueden ver al inicio de cada línea:

    Salida de sudo dmesg -x en una ventana de terminal

    La primera sección resaltada es un mensaje de la estructura "kernel" con un nivel de "advertencia". La segunda sección resaltada es un mensaje de la estructura "kernel" con un nivel de "información".

    Eso es genial, pero ¿por qué?

    En pocas palabras, resolución de problemas.

    Si tiene problemas con un componente de hardware que no se reconoce o no se comporta correctamente, dmesg podría arrojar algo de luz sobre la cuestión.

    • Uso dmesg para revisar los mensajes desde el nivel más alto hasta cada nivel inferior, buscando errores o advertencias que mencionen el elemento de hardware o que puedan tener una influencia en el problema.
    • Uso dmesg busque cualquier mención de la instalación adecuada para ver si contiene información útil.
    • Tubo dmesg A través de grep y busque cadenas o identificadores relacionados, como el fabricante del producto o los números de modelo.
    • Tubo dmesg A través de grep y busque términos genéricos como "gpu" o "almacenamiento" o términos como "error", "fallido" o "fallido".
    • Utilizar el --follow opción y mira dmesg mensajes en tiempo real.

    Buena caza.

    Subir Change privacy settings