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/kmsgdirectamente, 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/kmsga 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 100para mostrar también las 100 líneas anteriores)