Wie kann ich Änderungen an der dmesg-Ausgabe sehen?

Wie kann ich Änderungen an der dmesg-Ausgabe sehen?

Ich schreibe einen Gerätetreiber, der Fehlermeldungen ausgibt inRingpufferdmesg-Ausgabe. Ich möchte die Ausgabe sehen, dmesgwenn sie sich ändert.

Wie kann ich das machen?

Antwort1

Relativ neue dmesgVersionenBieten Sie eine Follow-Option an( -w, --follow), das analog zu funktioniert tail -f.

Verwenden Sie daher einfach den folgenden Befehl:

$ dmesg -wH

( -H, --humanermö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 dmesgdirekt ü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 syslogModul vernünftige (z. B. Standard-)Einstellungen hat, werden diese Meldungen höchstwahrscheinlich auch in der kern.logProtokolldatei 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.

verwandte Informationen