Solo hazlo @ # $% ing trabajo
- Desea imprimir la salida de dmesg, constantemente, inmediatamente
- Dmesg está imprimiendo el buffer del anillo del núcleo (ver
man dmesg
)
- El búfer de anillo del núcleo es un archivo de proceso especial,
/proc/kmsg
(ver man proc
)
- Leer
/proc/kmsg
directamente, es decir cat /proc/kmsg
.
Ahora, si lee el amigable manual de proceso, le advertirá severamente que permita que solo un usuario (que debe tener privilegios) lea /proc/kmsg
a la vez. Cualquier implementación de syslog que tenga debe estar haciendo esto, y presumiblemente funciona dmesg
. No sé, estoy fuera de mi alcance aquí, solo parafraseando el manual. Entonces, si bien esta es la forma de "simplemente hacer que funcione en # # $% ing", considere primero los siguientes dos métodos.
Página de manual aprobada: ver + dmesg
En Arch gnu / linux con systemd init *, dmesg.log no se escribe con mucha frecuencia, ¿tal vez en absoluto? La mejor manera que encontré para leer el búfer de registro del núcleo continuamente es con watch
. Algo como esto debería ayudarlo a comenzar (ajuste la cantidad de líneas que caben en su terminal):
watch 'dmesg | tail -50'
ver + dmesg + daemon + tail -f
Una solución más complicada podría usar watch para escribir la salida de dmesg en el archivo, que luego podría usar tail -f
. Probablemente quieras que esto funcione como un demonio. Un demonio adecuado también gzip y gire los registros. El siguiente código bash no se ha probado, no funciona y solo pretende transmitir una idea. La respuesta de @Brooks Moses tiene una versión funcional .
watch 'dmesg >> /var/log/dmesg.log | tail -1'
* tangente, porque esta es una pregunta de osx, pero cuando systemd está cerca, no te molestes dmesg
, usa journalctl -xf
(quizás w / -n 100
para mostrar también las 100 líneas anteriores)