dmesg
Das Programm dmesg ist ein Unix-Befehl, der Nachrichten aus dem Puffer des Kernels ausgibt. Der Befehl ist seit 4.0BSD[1] von 1980 in Unix enthalten, so auch in der UNIX 8th Edition[2] von 1985, sowie in einigen Unix-artigen Betriebssystemen wie beispielsweise Linux.[3] Dabei ist dmesg jedoch nicht Teil der POSIX-Spezifikation.
Funktionsweise
dmesg, was u. a. für englisch display messages oder
stehen kann, liest die Systemnachrichten (
) direkt aus dem Kernel-Pufferspeicher und gibt sie als lesbaren Text aus. Unix folgt dem Prinzip „Alles ist eine Datei“, sodass auch der Kernelpuffer aus einer Datei im Unix-Dateisystem ausgelesen werden kann. Unter Linux liest dmesg beispielsweise standardmäßig /proc/kmsg
aus.[3] Fast immer ist diese Datei jedoch privilegiert, sodass auch dmesg normalerweise nur als Benutzer „root“ ausgeführt werden kann.
Da der Kernelpufferspeicher eine begrenzte Größe hat, können eventuell nicht alle Systemnachrichten vorgehalten werden. Wird der Speicher voll, werden ältere Nachrichten verworfen (Ringpuffer), wodurch diese auch bei der Ausgabe mit dmesg fehlen.
Verwendung
dmesg wird gerne von Systemadministratoren[4] und manchmal auch von Benutzern[5] zur Fehleranalyse verwendet. Nicht selten ist die Ausgabe von dmesg auch ein wesentlicher Teil für Fehlerberichte (englisch bug reports) bei Linux.[6][7]
Beispiel, bei dem das Kernel-Log auf einer Unix-Shell unter Linux in die Datei dmesg.log
(im aktuellen Verzeichnis) gespeichert wird:
# dmesg > dmesg.log
Beispiel für eine spezifische Fehleranalyse (die Zeichenkette „i915“ als Suchfilter soll Meldungen des gleichnamigen Kernel-Moduls isoliert zeigen):
# dmesg | grep i915 [ 5.552078] i915 0000:00:02.0: [drm] VT-d active for gfx access [ 5.553821] i915 0000:00:02.0: vgaarb: deactivate vga console [ 5.553881] i915 0000:00:02.0: [drm] DMAR active, disabling use of stolen memory [ 5.555138] i915 0000:00:02.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=io+mem:owns=io+mem [ 5.604661] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.0 on minor 0 [ 5.803113] fbcon: i915drmfb (fb0) is primary device [ 6.691361] i915 0000:00:02.0: [drm] *ERROR* uncleared fifo underrun on pipe A [ 6.691368] i915 0000:00:02.0: [drm] *ERROR* CPU pipe A FIFO underrun [ 6.693280] i915 0000:00:02.0: [drm] *ERROR* uncleared pch fifo underrun on pch transcoder A [ 6.693287] i915 0000:00:02.0: [drm] *ERROR* PCH transcoder A FIFO underrun [ 6.707693] snd_hda_intel 0000:00:1b.0: bound 0000:00:02.0 (ops i915_audio_component_bind_ops) [ 7.369510] i915 0000:00:02.0: [drm] fb0: i915drmfb frame buffer device
Alternativen
Einige Unix- und Unix-artige Betriebssysteme führen eigene bzw. erweiterte Logs, die Teile der Kernel-Systemnachrichten enthalten. So kann unter Linux die Datei /var/log/messages
ausgegeben werden, die von syslogd geführt wird. Unter macOS finden sich die Nachrichten unter /var/log/kernel.log
und /var/log/system.log
.[8]
Moderne init-Systeme wie systemd integrieren die Funktionalität von dmesg ebenfalls.
Siehe auch
- syslogd(8) – siehe syslog
- util-linux – dmesg ist in diesem Standardpaket für das Betriebssystem Linux enthalten
Weblinks
dmesg(8)
: display the system message buffer – OpenBSD System Manager's Manualdmesg(1)
: print or control the kernel ring buffer – Debian GNU/Linux Ausführbare Programme oder Shell-Befehle Handbuchseite
Anmerkungen
- ↑ dmesg(8) – display the system message buffer. (Manpage) In: OpenBSD 6.0. 13. März 2015, abgerufen am 30. Juni 2021 (englisch): „HISTORY – The dmesg command appeared in 4.0BSD.“
- ↑ dmesg(8) – system diagnostic messages. (Manpage) In: UNIX 8th Edition Manual. Abgerufen am 30. Juni 2021 (englisch).
- ↑ a b dmesg(1) – den Kernel-Ringpuffer anzeigen und steuern. (Manpage) In: Debian. Juni 2012, abgerufen am 30. Juni 2021.
- ↑ Ken Hess: Linux tools: Getting the message out with dmesg. Red Hat, 22. Januar 2020, abgerufen am 30. Juni 2021 (englisch): „The dmesg command is a sysadmin's best friend for troubleshooting.“
- ↑ David Wolski: Programm-Abstürzen in Linux auf die Spur kommen. In: PC-Welt. 23. Januar 2016, abgerufen am 30. Juni 2021.
- ↑ Filing Kernel Bug reports. In: Ubuntu Wiki. 23. Juli 2016, abgerufen am 30. Juni 2021 (englisch).
- ↑ Bug hunting. In: The Linux Kernel Docs. Abgerufen am 30. Juni 2021 (englisch).
- ↑ Follow System & Kernel Logs from Command Line in Mac OS X. OS X Daily, 20. April 2011, abgerufen am 30. Juni 2021 (englisch).