
Ich schreibe einen Gerätetreiber, der Fehlermeldungen ausgibt inRingpufferdmesg-Ausgabe. Ich möchte die Ausgabe sehen, dmesg
wenn sie sich ändert.
Wie kann ich das machen?
Antwort1
Relativ neue dmesg
VersionenBieten Sie eine Follow-Option an( -w
, --follow
), das analog zu funktioniert tail -f
.
Verwenden Sie daher einfach den folgenden Befehl:
$ dmesg -wH
( -H
, --human
ermöglicht benutzerfreundliche Funktionen wie Farben, relative Zeit)
Diese Optionen sind beispielsweise in Fedora 19 verfügbar.
Antwort2
Sie können den Befehl verwenden watch
, der genau für solche Dinge vorgesehen ist
watch -n 0.1 "dmesg | tail -n $((LINES-6))"
Das $((LINES-6))
Teil sollte gut in Ihr Terminal passen.
Antwort3
Sie können die Ausgabe nicht wirklich dmesg
direkt überwachen.
Es besteht jedoch eine hohe Wahrscheinlichkeit, dass Ihr Modul nicht direkt in den Ringpuffer von dmesg druckt, sondern stattdessen die Protokollierungsfunktionen des Kernels verwendet (die dann von angezeigt werden dmesg
). Wenn Ihr syslog
Modul vernünftige (z. B. Standard-)Einstellungen hat, werden diese Meldungen höchstwahrscheinlich auch in der kern.log
Protokolldatei angezeigt.
Sie können also beispielsweise Folgendes tun:
tail -f /var/log/kern.log
Antwort4
Wenn Sie ein eingebettetes System verwenden, wieBusyBoxDas ist üblich bei Systemen wieOpenWrt, es hat eine sehr eingeschränkte Funktionalität und es werden nur 2-3 Flags unterstützt.
Wenn Sie schnell und unkompliziert dmesg-Ausgaben kontinuierlich auf dem Bildschirm ausgeben möchten, während sich Ereignisse ändern, funktioniert eine einfache Bash-Schleife einwandfrei. Das ist nicht ideal, aber wie ich bereits erwähnt habe, fehlen dem BusyBox-dmesg viele Funktionen. Ich habe festgestellt, dass Folgendes den gleichen Effekt hat, wenn es in die Befehlszeile eingegeben wird:
$ while true; do dmesg -c ; sleep 1 ; done
Sie können die Schleife mit Ctrl+ beenden C. Die Option sleep 1 soll verhindern, dass die CPU unnötig belastet wird, und das Flag -c löscht den Puffer bei jedem Aufruf, sodass Sie nicht jede Sekunde eine wiederholte Ausgabe sehen.