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
- Zeitpunkt des Fehlers eingrenzen.
journalctl -u <dienst> --since ...und-p erransehen.- Bei Hardwareproblemen
dmesg -T | tail. - Die erste Fehlermeldung ist meist wichtiger als die Folgefehler.
- 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