Apenas faça com que # # $% ing funcione
- Você deseja imprimir a saída do dmesg, constantemente, imediatamente
- Dmesg está imprimindo o buffer de anel do kernel (consulte
man dmesg
)
- O buffer do anel do kernel é um arquivo proc especial,
/proc/kmsg
(consulte man proc
)
- Leia
/proc/kmsg
diretamente, ie cat /proc/kmsg
.
Agora, se você ler o amigável manual de procedimentos, será severamente avisado que você deixe apenas um usuário (que deve ter o privilégio) ler de /proc/kmsg
cada vez. Qualquer que seja a implementação do syslog, você deve fazer isso e, presumivelmente, ela funciona dmesg
. Não sei, estou fora da minha liga aqui, apenas parafraseando o manual. Portanto, embora esse seja o modo "apenas faça com que funcione # # $% ing", considere os próximos métodos primeiro.
Página de manual aprovada: watch + dmesg
No Arch gnu / linux com systemd init *, o dmesg.log não é gravado com muita frequência, talvez não seja? A melhor maneira que encontrei para ler o buffer de log do kernel continuamente é com watch
. Algo assim deve ajudá-lo (ajuste para quantas linhas cabem no seu terminal):
watch 'dmesg | tail -50'
watch + dmesg + daemon + tail -f
Uma solução mais complicada pode usar o watch para gravar a saída dmesg em um arquivo, o que você poderia então tail -f
. Você provavelmente gostaria que isso funcionasse como um daemon. Um daemon adequado também compactaria e giraria os logs. O seguinte código de base não é testado, não funciona e tem como objetivo apenas transmitir uma ideia. @Brooks A resposta de Moisés tem uma versão funcional .
watch 'dmesg >> /var/log/dmesg.log | tail -1'
* tangente, porque esta é uma pergunta osx, mas quando systemd está por perto, não se preocupe dmesg
, use journalctl -xf
(talvez w / -n 100
para também mostrar as 100 linhas anteriores)