EMZETT.
Login

dmesg und journalctl: Systemmeldungen lesen

Kurz: dmesg zeigt die Meldungen des Kernels (Hardware, Treiber, Fehler), journalctl die gesammelten Logs aller Dienste unter systemd.

Genauer: Wenn etwas nicht funktioniert, steht die Ursache oft schon in einer Logmeldung. Unter Linux gibt es dafür zwei Hauptwerkzeuge: dmesg für den Kernel-Ringpuffer und journalctl für das systemd-Journal, das auch Dienste, Anmeldungen und Anwendungen erfasst.

Im Detail

dmesg

dmesg                    # alle Kernel-Meldungen seit dem Start
dmesg -T                 # mit lesbarer Zeit
dmesg --level=err,warn   # nur Fehler und Warnungen
dmesg -w                 # live mitlesen (z. B. beim Einstecken eines USB-Sticks)

Typische Funde: erkannte Geräte, Treiberfehler, Festplattenfehler (I/O error), Speicherprobleme (Out of memory), Hardwareprobleme. Der Puffer ist begrenzt, ältere Meldungen werden überschrieben, und normale Benutzer dürfen ihn unter manchen Distributionen nur mit sudo lesen.

journalctl

journalctl -b                       # seit dem letzten Start
journalctl -b -1                    # vorheriger Start
journalctl -u nginx                 # Meldungen eines Dienstes
journalctl -u nginx -f              # live folgen
journalctl -p err                   # nur Priorität Fehler und höher
journalctl --since "1 hour ago"     # Zeitraum
journalctl -k                       # nur Kernel (wie dmesg)

Mit -o json lässt sich die Ausgabe maschinell auswerten. Das Journal ist standardmäßig nicht überall dauerhaft: Ist /var/log/journal/ vorhanden, bleibt es nach einem Neustart erhalten.

Vorgehen bei Problemen

  1. Zeitpunkt des Fehlers eingrenzen.
  2. journalctl -u <dienst> --since ... und -p err ansehen.
  3. Bei Hardwareproblemen dmesg -T | tail.
  4. Die erste Fehlermeldung ist meist wichtiger als die Folgefehler.
  5. Fehlertext in Suchmaschinen oder im Wiki nachschlagen.

Platz und Aufbewahrung

Das Journal begrenzt sich selbst (SystemMaxUse= in /etc/systemd/journald.conf). Alte Einträge entfernt sudo journalctl --vacuum-time=7d. Einen Fehlerbericht an andere gibt man mit journalctl -b -p err > fehler.txt weiter; achte auf persönliche Daten wie Benutzernamen oder Adressen.

Siehe auch: Logs und Zeitsteuerung, Kernel Panic und Oops, systemd, logrotate