# dmesg — den Kernel-Ring-Buffer auslesen und Hardware-Probleme diagnostizieren

> Praxis-Guide zu dmesg: Kernel-Meldungen zu Hardware, Treibern und OOM-Events lesen, live verfolgen, nach Level filtern und Zeitstempel formatieren.

Source: https://www.jpkc.com/db/cheatsheets/shell-system/dmesg/

<!-- PROSE:intro -->
dmesg liest den Kernel-Ring-Buffer aus – jenen begrenzten Speicherbereich, in dem der Linux-Kernel seine Meldungen zu Hardware-Erkennung, Treiber-Initialisierung, USB-Events, Plattenfehlern und dem OOM-Killer ablegt. Wenn ein Gerät nicht erkannt wird, das System sporadisch hängt oder ein Prozess unerklärlich abgeschossen wurde, ist dmesg meist die erste Anlaufstelle. Auf modernen Distributionen ist der Buffer aus Sicherheitsgründen oft nur noch mit `sudo` lesbar (`kernel.dmesg_restrict`). Dieser Guide zeigt dir, wie du Meldungen lesbar formatierst, gezielt filterst und live mitverfolgst.
<!-- PROSE:intro:end -->

## Grundlegende Verwendung

`dmesg` — Zeigt alle Kernel-Meldungen aus dem Ring-Buffer.

```bash
dmesg
```

`dmesg | less` — Blättert seitenweise durch die Kernel-Meldungen.

```bash
dmesg | less
```

`dmesg | tail -30` — Zeigt die letzten 30 Kernel-Meldungen.

```bash
dmesg | tail -30
```

`sudo dmesg` — Zeigt Kernel-Meldungen (auf vielen Systemen nur als root lesbar).

```bash
sudo dmesg
```

## Zeitstempel & Formatierung

`dmesg -T` — Zeigt lesbare Zeitstempel statt Sekunden seit dem Boot.

```bash
dmesg -T
```

`dmesg -t` — Gibt überhaupt keine Zeitstempel aus.

```bash
dmesg -t
```

`dmesg --time-format iso` — Zeigt Zeitstempel im ISO-8601-Format.

```bash
dmesg --time-format iso
```

`dmesg -x` — Dekodiert Facility und Level zu lesbaren Präfixen.

```bash
dmesg -x
```

`dmesg --color=always` — Erzwingt farbige Ausgabe (nützlich beim Pipen).

```bash
dmesg --color=always | less -R
```

`dmesg -H` — Lesbare Ausgabe mit Farben und Pager.

```bash
dmesg -H
```

## Nach Level filtern

`dmesg -l err` — Zeigt nur Fehlermeldungen.

```bash
dmesg -l err
```

`dmesg -l warn` — Zeigt nur Warnungen.

```bash
dmesg -l warn
```

`dmesg -l crit` — Zeigt nur kritische Meldungen.

```bash
dmesg -l crit
```

`dmesg -l emerg` — Zeigt nur Notfallmeldungen (System unbrauchbar).

```bash
dmesg -l emerg
```

`dmesg -l info` — Zeigt nur informative Meldungen.

```bash
dmesg -l info
```

`dmesg -l err,warn` — Zeigt Fehler und Warnungen kombiniert.

```bash
dmesg -l err,warn
```

`dmesg -l err,crit,alert,emerg` — Zeigt alle ernsthaften Meldungen.

```bash
dmesg -l err,crit,alert,emerg
```

## Nach Facility filtern

`dmesg -f kern` — Zeigt nur Kernel-Meldungen.

```bash
dmesg -f kern
```

`dmesg -f daemon` — Zeigt nur Daemon-Meldungen.

```bash
dmesg -f daemon
```

`dmesg -f user` — Zeigt nur Meldungen aus dem User-Space.

```bash
dmesg -f user
```

`dmesg -f syslog` — Zeigt nur Syslog-Meldungen.

```bash
dmesg -f syslog
```

## Live verfolgen & leeren

`dmesg -w` — Watch-Modus – gibt neue Kernel-Meldungen fortlaufend aus (wie tail -f).

```bash
sudo dmesg -w
```

`dmesg -W` — Verfolgen und warten – zeigt nur neue Meldungen (überspringt den bestehenden Buffer).

```bash
sudo dmesg -W
```

`dmesg -c` — Gibt den Ring-Buffer aus und leert ihn anschließend. Erfordert root.

```bash
sudo dmesg -c
```

`dmesg -C` — Leert den Ring-Buffer, ohne ihn auszugeben. Erfordert root.

```bash
sudo dmesg -C
```

`dmesg -D` — Deaktiviert die Ausgabe von Meldungen auf der Konsole.

```bash
sudo dmesg -D
```

`dmesg -E` — Aktiviert die Ausgabe von Meldungen auf der Konsole.

```bash
sudo dmesg -E
```

## Nach bestimmten Ereignissen suchen

`dmesg | grep -i error` — Sucht nach Fehlermeldungen (ohne Groß-/Kleinschreibung).

```bash
dmesg | grep -i error
```

`dmesg | grep -i 'usb'` — Zeigt USB-bezogene Kernel-Meldungen.

```bash
dmesg | grep -i 'usb'
```

`dmesg | grep -i 'eth\|ens\|enp'` — Zeigt Meldungen zu Netzwerk-Schnittstellen.

```bash
dmesg | grep -i 'eth\|ens\|enp'
```

`dmesg | grep -i 'sd[a-z]\|nvme'` — Zeigt Meldungen zu Platten und Speichergeräten.

```bash
dmesg | grep -i 'sd[a-z]\|nvme'
```

`dmesg | grep -i 'oom\|out of memory'` — Prüft auf Aktivität des OOM-Killers.

```bash
dmesg | grep -i 'oom\|out of memory'
```

`dmesg | grep -i 'segfault\|general protection'` — Sucht nach Segmentation Faults und Protection-Fehlern.

```bash
dmesg | grep -i 'segfault\|general protection'
```

`dmesg | grep -i 'firmware'` — Zeigt Meldungen zum Laden von Firmware.

```bash
dmesg | grep -i 'firmware'
```

## Praxis-Muster

`dmesg -T -l err,warn` — Zeigt Fehler und Warnungen mit lesbaren Zeitstempeln.

```bash
dmesg -T -l err,warn
```

`dmesg -T | tail -50` — Zeigt die 50 jüngsten Kernel-Meldungen mit Zeitstempeln.

```bash
dmesg -T | tail -50
```

`dmesg -Tw` — Verfolgt Kernel-Meldungen mit lesbaren Zeitstempeln.

```bash
sudo dmesg -Tw
```

`dmesg --since '1 hour ago'` — Zeigt Meldungen der letzten Stunde (erfordert ein aktuelles dmesg).

```bash
dmesg --since '1 hour ago'
```

`dmesg --until '2024-01-01 12:00'` — Zeigt Meldungen bis zu einem bestimmten Zeitpunkt.

```bash
dmesg --until '2024-01-01 12:00'
```

`dmesg -T > dmesg_$(date +%Y%m%d).log` — Speichert Kernel-Meldungen mit Zeitstempeln in eine datierte Log-Datei.

```bash
dmesg -T > dmesg_$(date +%Y%m%d).log
```

<!-- PROSE:outro -->
## Fazit

dmesg ist ein reines Lese-Kommando und damit weitgehend ungefährlich – die einzige Ausnahme ist `dmesg -C`, das den Ring-Buffer unwiderruflich leert und damit forensische Spuren vernichtet. Für die Diagnose lohnt es sich, Meldungen mit `-T` lesbar zu machen und mit `-l err,warn` auf das Wesentliche einzudampfen; `dmesg -w` folgt Ereignissen live, etwa beim Einstecken eines USB-Geräts. Auf Systemen mit `kernel.dmesg_restrict=1` brauchst du `sudo`. Inhaltlich überschneidet sich dmesg stark mit `journalctl -k`, das dieselben Kernel-Meldungen persistent und über Boots hinweg vorhält – für Langzeit-Analysen oft die bessere Wahl.

## Weiterführende Links

- [Wikipedia: dmesg](https://de.wikipedia.org/wiki/Dmesg) – Hintergrund zum Kernel-Ring-Buffer und zum Kommando
- [ubuntuusers-Wiki: dmesg](https://wiki.ubuntuusers.de/dmesg/) – deutschsprachige Einführung mit Praxisbeispielen
<!-- PROSE:outro:end -->

## Verwandte Kommandos

- [journalctl](https://www.jpkc.com/db/cheatsheets/shell-system/journalctl/) – das systemd-Journal abfragen, inklusive der Kernel-Meldungen via `journalctl -k`
- [strace](https://www.jpkc.com/db/cheatsheets/shell-system/strace/) – Systemaufrufe eines Prozesses verfolgen, wenn dmesg auf ein Problem hindeutet
- [lsof](https://www.jpkc.com/db/cheatsheets/shell-system/lsof/) – offene Dateien und Geräte auflisten, ergänzend zur Hardware-Diagnose

