Fais en sorte que ça marche.
- Vous voulez imprimer la sortie de dmesg, constamment, immédiatement.
- Dmesg imprime le tampon d'anneau du noyau (voir
man dmesg
)
- Le kernel ring buffer est un fichier proc spécial,
/proc/kmsg
(voir man proc
)
- Lire
/proc/kmsg
directement, c'est-à-dire cat /proc/kmsg
.
Maintenant, si vous lisez le manuel de proc amical, il vous avertira sévèrement de laisser seulement un utilisateur (qui doit être privilégié) lire /proc/kmsg
à la fois. Quelle que soit l'implémentation de syslog que vous avez, elle devrait faire cela, et vraisemblablement, elle fonctionne avec dmesg
. Je ne sais pas, je ne suis pas dans mon élément ici, je ne fais que paraphraser le manuel. Donc, bien que cette méthode soit la plus simple, considérez d'abord les deux méthodes suivantes.
Page man approuvée : watch + dmesg
Sur une des machines linux que j'utilise avec systemd init*, le fichier dmesg.log n'est pas écrit très souvent, peut-être même pas du tout ? La meilleure façon que j'ai trouvée pour lire le tampon du journal du noyau en continu est avec watch
. Voici un exemple de ce que vous pouvez faire (ajustez en fonction du nombre de lignes qui tiennent dans votre terminal) :
watch 'dmesg | tail -50'
watch + dmesg + daemon + tail -f
Une solution plus alambiquée pourrait utiliser watch pour écrire la sortie de dmesg dans un fichier, que vous pourriez alors tail -f
. Vous voudrez probablement que cela fonctionne comme un démon. Un bon démon devrait aussi gzip et faire tourner les logs. Le code bash suivant n'a pas été testé, ne fonctionne pas, et n'est destiné qu'à donner une idée. La réponse de @Brooks Moses comporte un version de travail .
watch 'dmesg >> /var/log/dmesg.log | tail -1'
* Il s'agit d'une question sur un système d'exploitation de bureau Apple : lorsque systemd est présent, il n'est pas nécessaire de s'embarrasser de dmesg
; utiliser journalctl -xf
(peut-être avec -n 100
pour afficher également les 100 lignes précédentes)