¿Cómo puedo ver la salida de dmesg a medida que cambia?

¿Cómo puedo ver la salida de dmesg a medida que cambia?

Estoy escribiendo un controlador de dispositivo que imprime un mensaje de error enbuffer de anillosalida de mensaje. Quiero ver el resultado de dmesga medida que cambia.

¿Cómo puedo hacer esto?

Respuesta1

dmesgVersiones relativamente recientesproporcionar una opción de seguimiento( -w, --follow) que funciona de manera análoga a tail -f.

Por lo tanto, simplemente use el siguiente comando:

$ dmesg -wH

( -H, --humanhabilita funciones fáciles de usar como colores, tiempo relativo)

Esas opciones están disponibles, por ejemplo, en Fedora 19.

Respuesta2

Puedes usar el watchcomando que está destinado exactamente para cosas como esta.

watch -n 0.1 "dmesg | tail -n $((LINES-6))"

la $((LINES-6))pieza debe encajar perfectamente en su terminal.

Respuesta3

Realmente no se puede monitorear la salida dmesgdirectamente.

Sin embargo, hay muchas posibilidades de que su módulo no imprima directamente en el búfer circular de dmesg, sino que utilice las funciones de registro del kernel (que luego se mostrarán en dmesg). Si syslogtiene algunas configuraciones sensatas (por ejemplo, predeterminadas), lo más probable es que estos mensajes también aparezcan en el kern.logarchivo de registro.

Entonces puedes hacer algo como:

 tail -f /var/log/kern.log

Respuesta4

Si está utilizando un sistema integrado, comoCaja ocupadaeso es común en sistemas comoOpenWrt, tiene una funcionalidad muy limitada y solo se admiten 2 o 3 indicadores.

Si desea una forma rápida y sucia de imprimir la salida dmesg en la pantalla continuamente a medida que cambian los eventos, un simple bucle Bash funciona bien. No es ideal, pero como mencioné, a BusyBox dmesg le faltan muchas funciones. Encuentro que lo siguiente tiene el mismo efecto cuando se ingresa en la línea de comando:

$ while true; do dmesg -c ; sleep 1 ; done

Puedes salir del ciclo con Ctrl+ C. El modo de suspensión 1 es para evitar que golpee la CPU innecesariamente, y el indicador -c borra el búfer en cada llamada para que no vea resultados repetidos cada segundo.

información relacionada