[[Vorlage(Getestet, general)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:mit_Root-Rechten_arbeiten:Rootrechte] }}} [[Inhaltsverzeichnis()]] [[Bild(Wiki/Icons/terminal.png,align=left, 48)]] dmesg steht für '''d'''isplay '''mes'''sa'''g'''e 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 * '''util-linux''' bereits vorinstalliert. = Benutzung = Die allgemeine Syntax von dmesg lautet: {{{#!vorlage Befehl dmesg OPTIONEN }}} Ab Ubuntu 20.10 werden Rootrechte[3] benötigt. {{{#!vorlage Befehl 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 [:Shell/Umleitungen#Der-Pipe-Operator: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: {{{#!vorlage Tabelle 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 [:man:Manpage] nachgelesen werden können. == Beispiele == Im folgenden Beispiel werden nur Meldungen aus der Quelle `user` gezeigt: {{{#!vorlage Befehl dmesg -f user }}} {{{ [ 18.573126] init: failsafe main process (798) killed by TERM signal }}} Die gleiche Ausgabe, aber mit besser lesbarer Zeitangabe: {{{#!vorlage Befehl 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`: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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:]: {{{#!vorlage Befehl watch 'dmesg | tail' }}} Unter neueren Ubuntu-Versionen ist auch Folgendes möglich: {{{#!vorlage Befehl dmesg -w }}} Beendet wird die Ausgabe mit [[Vorlage(Tasten, strg+c)]]. = Alternative = Man kann sich die Meldungen des Kernels auch mit [:journalctl:] anschauen: {{{#!vorlage Befehl journalctl -b -k }}} Dieser Befehl benötigt keine Rootrechte[3] und benutzt automatisch einen Pager. = Links = * [man:dmesg:Manpage] {en} * [https://karelzak.blogspot.com/2011/07/dmesg1-changes-for-util-linux-220.html dmesg(1) changes for util-linux 2.20] {en} - Blogbeitrag, 07/2011 * [:Shell/Befehlsübersicht:] - Übersicht über verschiedene Shellbefehle #tag: Shell, System