Wie kann ich die dmesg-Ausgabe sehen, wenn sie sich ändert?

Ich schreibe einen Gerätetreiber, der Fehlermeldungen in Ringpuffer dmesg Ausgabe druckt. Ich möchte die Ausgabe von dmesg sehen, wenn sie sich ändert.

Wie kann ich dies tun?

Sie können den Befehl watch verwenden, der genau für solche Dinge gedacht ist

watch -n 0.1 "dmesg | tail -n $((LINES-6))"

Der $((LINES-6))-Teil sollte dafür sorgen, dass es gut in dein Terminal passt.

Kommentare (4)

Sie können die Ausgabe von dmesg nicht wirklich direkt überwachen.

Allerdings ist die Wahrscheinlichkeit hoch, dass Ihr Modul nicht direkt in den Ring-Buffer von dmesg druckt, sondern die Kernel-Logging-Möglichkeiten nutzt (die dann von dmesg angezeigt werden). Wenn Ihr syslog vernünftige (z.B. Standard-) Einstellungen hat, werden diese Meldungen höchstwahrscheinlich auch in der kern.log-Logdatei auftauchen.

Sie können also etwas tun wie:

 tail -f /var/log/kern.log
Kommentare (2)

Sie verwenden dmesg, um Protokollmeldungen des Kernels zu erhalten.

Der Kernel selbst protokolliert in einem Ringpuffer, d.h. nur im Speicher. Alles, was dmesg nun tut, ist, den Inhalt dieses Ringpuffers auszugeben. Wenn Sie dmesg -c ausführen, wird auch der Ringpuffer anschließend gelöscht.

Daher könnten Sie etwas wie while true; do dmesg -c; sleep 1; done machen, um so etwas wie das Äquivalent eines nicht funktionierenden dmesg|tail zu haben. Aber dies löscht den Ringpuffer und benötigt daher root-Rechte.

Die andere Möglichkeit ist die Datei /proc/kmsg, die einen Blick auf den Ringpuffer erlaubt. Sie könnten tail -f /proc/kmsg machen, aber das ist nur einem Prozess erlaubt, und das ist normalerweise Ihr Logging Daemon. - Seine Aufgabe ist es, die Nachrichten zu lesen und sie in echte Dateien zu schreiben (normalerweise in /var/log), wo sie gelesen werden können. Er kann so konfiguriert werden, dass er alle Meldungen in eine einzige Datei oder verschiedene Teile davon in verschiedene Dateien ausgibt. (Die Konfiguration hängt jedoch vom Logging-Daemon Ihres Systems ab.)

Schauen Sie daher in /var/log nach, ob es eine Datei gibt, die Ihren Bedürfnissen entspricht und konfigurieren Sie Ihren Logging-Daemon anders.

Kommentare (1)