dmesg

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. ⚓︎ Installation von Programmen

  2. ⚓︎ Ein Terminal öffnen

  3. ⚓︎ Rootrechte

Inhaltsverzeichnis
  1. Installation
  2. Benutzung
    1. Beispiele
  3. Alternative
  4. Links

Wiki/Icons/terminal.png dmesg steht für display message und ist ein Programm, welches die Kernel-Meldungen (genau: die Meldungen des Kernel-Ringpuffers) auf dem Bildschirm ausgeben kann.

Das Programm wird im "normalen" Betrieb von Linux eher selten verwendet, ist aber immer dann nützlich, wenn Fehler im System gesucht werden, z.B. warum (neue) Hardware nicht korrekt erkannt oder eingebunden wird.

Installation

dmesg ist unter Ubuntu als Bestandteil des Pakets

bereits vorinstalliert.

Benutzung

Die allgemeine Syntax von dmesg lautet:

dmesg OPTIONEN 

Ab Ubuntu 20.10 werden Rootrechte[3] benötigt.

sudo dmesg OPTIONEN 

Da die Ausgabe des Aufrufs von dmesg sehr lang ist (u.a. weil darin sämtliche Meldungen des Bootvorgangs enthalten sind), wird das Programm oft in Kombination mit einer Pipe und einem Pager wie more, less oder tail eingesetzt. Wenn gezielt nach Meldungen gesucht wird, kombiniert man den Befehl mit grep.

dmesg kennt einige Optionen, welche u.a. auch die Ausgabe filtern bzw. einschränken können:

Optionen von dmesg
Option Beschreibung
-d Zeigt nicht nur den Zeitstempel einer Meldung an, sondern auch, wie viele Millisekunden seit der vorherigen Meldung vergangen sind
-T Zeigt den Zeitstempel nicht als Unix-Timecode an, sondern in einem für Menschen besser lesbaren Format: [Mo Mär 11 10:43:24 2013]
-t Ausgabe der Meldungen erfolgt ohne Zeitstempel
-f F, --facility F Zeigt nur Meldung der "facility" (=Quelle) F an. Mögliche Quellen sind: kern (kernel messages), user (random user-level messages), mail (mail system), daemon (system daemons), auth (security/authorization messages), syslog (messages generated internally by syslogd), lpr (line printer subsystem) und news (network news subsystem)
-l L, --level L Zeigt nur Meldungen des "levels" (=Stufe) L an. Mögliche Stufen sind: emerg (system is unusable), alert (action must be taken immediately), crit (critical conditions), err (error conditions), warn (warning conditions), notice (normal but significant condition), info (informational), debug (debug-level messages)
-h Zeigt die vollständige Hilfe zu dmesg an.

dmesg kennt noch eine Reihe weitere Optionen, welche über die Option -h aufgerufen oder in der Manpage nachgelesen werden können.

Beispiele

Im folgenden Beispiel werden nur Meldungen aus der Quelle user gezeigt:

dmesg -f user 

[   18.573126] init: failsafe main process (798) killed by TERM signal

Die gleiche Ausgabe, aber mit besser lesbarer Zeitangabe:

dmesg -f user -T 
[Mo Mär 11 18:04:23 2013] init: failsafe main process (798) killed by TERM signal

Der folgende Befehl zeigt nur Meldungen der Stufe debug:

dmesg -l debug 
...
[   17.350136] Registered led device: phy0-led
[   17.350163] cfg80211: Ignoring regulatory request Set by core since the driver uses its own custom regulatory domain
[   17.354005] ieee80211 phy0: Selected rate control algorithm 'iwl-4965-rs'
[   17.625767] snd_hda_intel 0000:00:1b.0: irq 48 for MSI/MSI-X
[   19.002576] tg3 0000:04:00.0: irq 49 for MSI/MSI-X
[   23.503001] wlan0: authenticate with 00:12:bf:71:86:8d
[   23.503084] wlan0: send auth to 00:12:bf:71:86:8d (try 1/3)
[   23.505021] wlan0: authenticated
[   23.516043] wlan0: associate with 00:12:bf:71:86:8d (try 1/3)
[   23.529425] wlan0: RX AssocResp from 00:12:bf:71:86:8d (capab=0x431 status=0

Im nächsten Beispiel wird dmesg in Kombination mit tail genutzt, so dass nur die letzten zehn Meldungen angezeigt werden:

dmesg | tail 
[   19.002576] tg3 0000:04:00.0: irq 49 for MSI/MSI-X
[   19.032556] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[   19.033293] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[   23.503001] wlan0: authenticate with 00:12:bf:71:86:8d
[   23.503084] wlan0: send auth to 00:12:bf:71:86:8d (try 1/3)
[   23.505021] wlan0: authenticated
[   23.516043] wlan0: associate with 00:12:bf:71:86:8d (try 1/3)
[   23.529425] wlan0: RX AssocResp from 00:12:bf:71:86:8d (capab=0x431 status=0 aid=2)
[   23.553340] wlan0: associated
[   23.553607] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready

Um Änderungen "live" mitverfolgen zu können, kombiniert man dmesg und tail noch mit watch:

watch 'dmesg | tail' 

Unter neueren Ubuntu-Versionen ist auch Folgendes möglich:

dmesg -w 

Beendet wird die Ausgabe mit Strg + C .

Alternative

Man kann sich die Meldungen des Kernels auch mit journalctl anschauen:

journalctl -b -k 

Dieser Befehl benötigt keine Rootrechte[3] und benutzt automatisch einen Pager.