journalctl — das systemd-Journal abfragen und durchsuchen
Praxis-Guide zu journalctl: das systemd-Journal nach Unit, Zeit und Priorität filtern, Logs live verfolgen, Boot- und Kernel-Meldungen prüfen und Speicher freiräumen.
journalctl ist dein Fenster in das systemd-Journal – den zentralen Log-Speicher, der Meldungen von Kernel, Diensten und Anwendungen strukturiert und durchsuchbar sammelt. Statt verstreute Textdateien unter /var/log zu durchforsten, filterst du gezielt nach Unit, Zeitraum, Priorität oder Prozess und verfolgst neue Einträge in Echtzeit. Dieser Guide zeigt dir die Abfragen, die du beim Debugging und im Betrieb wirklich brauchst – von der Diagnose eines einzelnen Dienstes bis zum Aufräumen eines voll gelaufenen Journals.
Grundlegende Nutzung
journalctl — Alle Journal-Einträge anzeigen (älteste zuerst) im Pager.
journalctljournalctl -r — Einträge in umgekehrter Reihenfolge anzeigen (neueste zuerst).
journalctl -rjournalctl -n N — Nur die letzten N Einträge anzeigen (Standard: 10).
journalctl -n 50journalctl -f — Follow-Modus – neue Einträge fortlaufend anzeigen (wie tail -f).
journalctl -fjournalctl -e — Im Pager ans Ende des Journals springen.
journalctl -ejournalctl --no-pager — Direkt ohne Pager ausgeben. Praktisch zum Weiterleiten (Piping).
journalctl --no-pager -n 100Nach Unit/Service filtern
journalctl -u UNIT — Logs einer bestimmten systemd-Unit bzw. eines Dienstes anzeigen.
journalctl -u nginx.servicejournalctl -u UNIT -f — Logs eines bestimmten Dienstes live verfolgen.
journalctl -u nginx.service -fjournalctl -u UNIT1 -u UNIT2 — Logs mehrerer Dienste anzeigen.
journalctl -u nginx.service -u php-fpm.servicejournalctl -u 'nginx*' — Logs für Units anzeigen, die auf ein Muster passen.
journalctl -u 'nginx*'journalctl -u UNIT --since today — Heutige Logs eines Dienstes anzeigen.
journalctl -u sshd.service --since todayNach Zeit filtern
journalctl --since 'YYYY-MM-DD HH:MM:SS' — Einträge ab einem bestimmten Datum und Zeitpunkt anzeigen.
journalctl --since '2024-01-15 09:00:00'journalctl --until 'YYYY-MM-DD HH:MM:SS' — Einträge bis zu einem bestimmten Datum und Zeitpunkt anzeigen.
journalctl --until '2024-01-15 17:00:00'journalctl --since today — Einträge von heute anzeigen.
journalctl --since todayjournalctl --since yesterday --until today — Einträge von gestern anzeigen.
journalctl --since yesterday --until todayjournalctl --since '1 hour ago' — Einträge der letzten Stunde anzeigen.
journalctl --since '1 hour ago'journalctl --since '30 min ago' — Einträge der letzten 30 Minuten anzeigen.
journalctl --since '30 min ago'journalctl --since '2 days ago' — Einträge der letzten 2 Tage anzeigen.
journalctl --since '2 days ago'Nach Priorität filtern
journalctl -p err — Nur Fehlermeldungen und höher anzeigen (err, crit, alert, emerg).
journalctl -p errjournalctl -p warning — Warnungen und höher anzeigen.
journalctl -p warningjournalctl -p crit — Nur kritische Meldungen und höher anzeigen.
journalctl -p critjournalctl -p info — Info und höher anzeigen (Standard).
journalctl -p infojournalctl -p debug — Alle Meldungen inklusive Debug-Ebene anzeigen.
journalctl -p debugjournalctl -p err..warning — Meldungen in einem Prioritätsbereich anzeigen.
journalctl -p err..warningNach Prozess & Benutzer filtern
journalctl _PID=PID — Logs einer bestimmten Prozess-ID anzeigen.
journalctl _PID=1234journalctl _UID=UID — Logs einer bestimmten Benutzer-ID anzeigen.
journalctl _UID=1000journalctl _GID=GID — Logs einer bestimmten Gruppen-ID anzeigen.
journalctl _GID=33journalctl _COMM=COMMAND — Logs von Prozessen mit einem bestimmten Kommandonamen anzeigen.
journalctl _COMM=sshdjournalctl _EXE=PATH — Logs einer bestimmten ausführbaren Datei anzeigen.
journalctl _EXE=/usr/sbin/nginxjournalctl _HOSTNAME=HOST — Logs eines bestimmten Hostnamens anzeigen (nützlich bei zentralem Journaling).
journalctl _HOSTNAME=webserver01Kernel-Meldungen
journalctl -k — Nur Kernel-Meldungen anzeigen (entspricht dmesg).
journalctl -kjournalctl -k -b — Kernel-Meldungen des aktuellen Boots anzeigen.
journalctl -k -bjournalctl -k -p err — Kernel-Fehler anzeigen.
journalctl -k -p errjournalctl -k -f — Kernel-Meldungen in Echtzeit verfolgen.
journalctl -k -fBoot-Logs
journalctl -b — Logs des aktuellen Boots anzeigen.
journalctl -bjournalctl -b -1 — Logs des vorherigen Boots anzeigen.
journalctl -b -1journalctl -b -2 — Logs von vor zwei Boots anzeigen.
journalctl -b -2journalctl --list-boots — Alle verfügbaren Boot-Sitzungen mit Zeitstempeln auflisten.
journalctl --list-bootsAusgabeformate
journalctl -o short — Standard-Ausgabe im Syslog-Stil.
journalctl -o short -n 10journalctl -o short-precise — Syslog-Stil mit Mikrosekunden-Genauigkeit.
journalctl -o short-precise -n 10journalctl -o short-iso — Syslog-Stil mit ISO-8601-Zeitstempeln.
journalctl -o short-iso -n 10journalctl -o verbose — Alle Felder jedes Eintrags anzeigen.
journalctl -o verbose -n 5journalctl -o json — Ausgabe im JSON-Format (ein Objekt pro Zeile).
journalctl -o json -n 5journalctl -o json-pretty — Ausgabe als formatiertes JSON.
journalctl -o json-pretty -n 5journalctl -o cat — Nur den Meldungstext anzeigen (ohne Metadaten).
journalctl -u nginx -o cat -n 20journalctl -o export — Binäres Exportformat für journalctl --import.
journalctl -o export > journal.exportSuchen & Grep
journalctl -g PATTERN — Einträge per regulärem Ausdruck filtern (wie grep).
journalctl -g 'error|fail'journalctl -g PATTERN --case-sensitive=no — Regex-Suche ohne Beachtung der Groß-/Kleinschreibung.
journalctl -g 'timeout' --case-sensitive=nojournalctl | grep PATTERN — Zur klassischen Textsuche durch grep leiten.
journalctl --no-pager | grep 'Failed password'Speicherplatz & Wartung
journalctl --disk-usage — Anzeigen, wie viel Speicher das Journal belegt.
journalctl --disk-usagejournalctl --vacuum-size=SIZE — Alte Einträge entfernen, bis das Journal unter SIZE liegt. Destruktiv: gelöschte Logs sind unwiderruflich weg.
sudo journalctl --vacuum-size=500Mjournalctl --vacuum-time=TIME — Einträge entfernen, die älter als TIME sind. Destruktiv.
sudo journalctl --vacuum-time=30djournalctl --vacuum-files=N — Nur die N neuesten Journal-Dateien behalten; ältere werden gelöscht. Destruktiv.
sudo journalctl --vacuum-files=5journalctl --rotate — Rotation der Journal-Dateien erzwingen (aktuelle Datei schließen, neue beginnen) – Voraussetzung für sofortiges Vacuumen.
sudo journalctl --rotatejournalctl --verify — Integrität der Journal-Dateien prüfen.
journalctl --verifyTypische Muster
journalctl -u nginx -p err --since today — Heutige Fehler von nginx.
journalctl -u nginx.service -p err --since todayjournalctl -u sshd -g 'Failed password' --since '1 hour ago' — Fehlgeschlagene SSH-Logins der letzten Stunde.
journalctl -u sshd.service -g 'Failed password' --since '1 hour ago'journalctl -p err -b --no-pager — Alle Fehler seit dem aktuellen Boot ohne Pager.
journalctl -p err -b --no-pagerjournalctl -u UNIT -o json --no-pager | jq . — Dienst-Logs als JSON mit jq auswerten.
journalctl -u nginx -o json --no-pager -n 5 | jq .journalctl -k -p err -b — Kernel-Fehler des aktuellen Boots.
journalctl -k -p err -bjournalctl --since '5 min ago' -f — Die letzten 5 Minuten anzeigen und weiter verfolgen.
journalctl --since '5 min ago' -f Fazit
journalctl macht aus verstreuten Logdateien eine einzige, durchsuchbare Quelle: Mit -u, --since, -p und -f grenzt du Vorfälle in Sekunden ein, und -b bzw. -k bringen dich gezielt an Boot- und Kernel-Meldungen; -x ergänzt erklärende Hinweise zu vielen systemd-Einträgen. Für den Zugriff auf fremde oder systemweite Logs musst du in der Gruppe adm oder systemd-journal sein (oder sudo nutzen); ob das Journal Neustarts überlebt, hängt von Storage=persistent und einem vorhandenen /var/log/journal ab. Vorsicht bei --vacuum-size, --vacuum-time, --vacuum-files und --rotate: Diese Befehle löschen bzw. verdrängen alte Einträge unwiderruflich – ideal zum Freiräumen von Speicher, aber führe sie nie auf Verdacht aus, solange du die Logs noch zur Analyse brauchst.
Weiterführende Links
- systemd: journalctl (Manpage) – offizielle Referenz aller Optionen und Journal-Felder
- ubuntuusers-Wiki: systemd/journalctl – deutschsprachige Einführung in das systemd-Journal