Apenas faça o trabalho de # # $% ing
- Você deseja imprimir a saída do dmesg, constantemente, imediatamente
- O Dmesg está imprimindo o buffer de anel do kernel (veja
man dmesg
)
- O buffer de anel do kernel é um arquivo proc especial,
/proc/kmsg
(consulte man proc
)
- Leia
/proc/kmsg
diretamente, ou seja, cat /proc/kmsg
.
Agora, se você ler o manual amigável do proc, ele avisará severamente para permitir que apenas um usuário (que deve ser privilegiado) leia /proc/kmsg
de cada vez. Qualquer que seja a implementação do syslog, você deve estar fazendo isso e, presumivelmente, funciona com dmesg
. Eu não sei, estou fora do meu alcance aqui, apenas parafraseando o manual. Portanto, embora esse seja o modo "apenas faça com que ele funcione corretamente, considere os próximos métodos em primeiro lugar.
Página man aprovada: watch + dmesg
No Arch gnu / linux com systemd init *, o dmesg.log não é escrito com muita frequência, talvez não seja de todo? A melhor maneira que encontrei para ler o buffer de log do kernel continuamente é com watch
. Algo como isso deve começar (ajuste para quantas linhas cabem no seu terminal):
watch 'dmesg | tail -50'
assista + dmesg + daemon + tail -f
Uma solução mais complicada pode usar o watch para gravar a saída do dmesg para o arquivo, que você poderia então tail -f
. Você provavelmente quer que isso seja executado como um daemon. Um daemon apropriado também gziparia e rotacionaria logs. O seguinte código bash é não testado, não funciona e tem a intenção apenas de transmitir uma ideia. A resposta de @Brooks Moses tem uma versão de trabalho .
watch 'dmesg >> /var/log/dmesg.log | tail -1'
* tangente, porque esta é uma questão osx, mas quando o systemd está por perto, não se incomode com dmesg
, use journalctl -xf
(talvez com -n 100
para mostrar também as 100 linhas anteriores)