Skip to content

journalctl

Das Journal wird mit dem Daemon journald implementiert, der alle vom Kernel, initrd, services etc. erzeugten Nachrichten verarbeitet. In diesem Leitfaden besprechen wir die Verwendung des Dienstprogramms journalctl, mit dem Sie auf die in dem Journal gespeicherten Daten zugreifen und diese manipulieren können.

Der Parameter -g (grep), filtert die Logausgabe nach den gesuchten Begriff.

journalctl -g CMD
Aug 30 00:01:01 debian CRON[2048054]: (www-data) CMD ([ -x /usr/share/lemonldap-ng/bin/purgeLocalCache ] && /usr/share/lemonldap-ng/bin/purgeLocalCache)
Aug 30 00:05:01 debian CRON[2048149]: (root) CMD ([ $(( ($(date +%s)/86400+0) % 3 )) = 0 ]  && /usr/local/sbin/aptmirror.sh >/dev/null 2>&1)
Aug 30 00:07:01 debian CRON[2048183]: (www-data) CMD ([ -x /usr/share/lemonldap-ng/bin/purgeCentralCache ] && /usr/share/lemonldap-ng/bin/purgeCentralCache)
Aug 30 00:09:01 debian CRON[2048862]: (root) CMD (  [ -x /usr/lib/php/sessionclean ] && if [ ! -d /run/systemd/system ]; then /usr/lib/php/sessionclean; fi)
Aug 30 00:17:01 debian CRON[2049000]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Aug 30 00:39:01 debian CRON[2049464]: (root) CMD (  [ -x /usr/lib/php/sessionclean ] && if [ ! -d /run/systemd/system ]; then /usr/lib/php/sessionclean; fi)
Aug 30 01:00:01 debian CRON[2049890]: (mschulz) CMD (/var/www/mschulz/htdocs/datenvolumen/bin/datenvolumen.sh >/dev/null 2>&1)
Aug 30 01:01:01 debian CRON[2050275]: (www-data) CMD ([ -x /usr/share/lemonldap-ng/bin/purgeLocalCache ] && /usr/share/lemonldap-ng/bin/purgeLocalCache)
Aug 30 01:07:01 debian CRON[2050371]: (www-data) CMD ([ -x /usr/share/lemonldap-ng/bin/purgeCentralCache ] && /usr/share/lemonldap-ng/bin/purgeCentralCache)
Aug 30 01:09:01 debian CRON[2050464]: (root) CMD (  [ -x /usr/lib/php/sessionclean ] && if [ ! -d /run/systemd/system ]; then /usr/lib/php/sessionclean; fi)
Aug 30 01:17:01 debian CRON[2050605]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)

Möchte man den Zeit Stempel in UTC anzeigen, setzt man einfach die Option --utc.

journalctl --utc

Möchte man die Logs aus dem aktuellem Boot anzeigen, setzt man die Option -b.

journalctl -b

Mit der Option --list-boots lassen sich alle vorhandenen Boots anzeigen.

journalctl --list-boots
IDX BOOT ID                          FIRST ENTRY                  LAST ENTRY
 -6 1672b2870a18461b9d2ea1c68f3f8ab3 Tue 2023-08-29 17:00:04 CEST Wed 2023-08-30 16:56:44 CEST
 -5 84886da6aed54eca836cd9d8b032983b Wed 2023-08-30 18:39:33 CEST Mon 2023-09-04 08:27:33 CEST
 -4 4297da1aada644c6981ff177f2bd73d1 Mon 2023-09-04 08:28:08 CEST Mon 2023-09-04 08:46:23 CEST
 -3 c5b81f20161f4a7dbfc72ba8e1dc7219 Mon 2023-09-04 08:46:56 CEST Mon 2023-09-04 09:33:23 CEST
 -2 53f00c10ed1447e0a5bd7f7e980f90e9 Mon 2023-09-04 09:33:57 CEST Mon 2023-09-04 09:50:09 CEST
 -1 1c496be2888242a48d279a2b3d111403 Mon 2023-09-04 09:50:43 CEST Mon 2023-09-04 10:19:42 CEST
  0 1fb3cf9cafcd4a20af1f4138bcbb3ccb Mon 2023-09-04 10:20:16 CEST Mon 2023-09-04 11:54:40 CEST

Mit der Option -b und dem gewünschen Index, der sich aus --list-boots anzeigen lässt, kann man nun die Logs des jeweiligen Boot anzeigen lassen. Das funktioniert auch mit der gewünschten Boot-ID.

journalctl -b -1

oder

journalctl -b 1c496be2888242a48d279a2b3d111403

Möchte man die Ausgabe der Logs auf ein Zeitfenster eingenzen, kann man dazu die Optionen --since und --until nutzen. Das Format für den Zeitraum wird in YYYY-MM-DD HH:MM:SS angegeben.

journalctl --since "2015-01-10" --until "2015-01-11 03:00"

Als Zeitraum kann man auch relative werte wie now, today, tomorrow, yesterday oder aber 1 day ago, 1 hour ago verwenden.

journalctl --since yesterday --until "1 hour ago"

oder

journalctl --since today

Die vielleicht wichtigste Art der Filterung ist mit der Option -u nach Service zu filtern. Die lässt sich auch mit mehreren Services kombinieren.

journalctl -u nginx.service

oder

journalctl -u nginx.service -u php-fpm.service --since today

Mit der Option -p lassen sich bestimmte Prioritäten anzeigen. Das folgende Beispiel zeigt alle Meldungen des letzten Boots vom Typ Error an.

Folgende Prioritäten sind vorhanden:

  • 0: emerg (Notfall)
  • 1: alert (Alarm)
  • 2: crit (kritisch)
  • 3: err (Fehler)
  • 4: warning (Warnung)
  • 5: notice (Hinweis)
  • 6: info (Information)
  • 7: debug (Fehlersuche)
journalctl -p err -b

Die Anzeige der Information können wir mit der Option --no-full vereinfachen.

journalctl --no-full

Mit der Option --no-pager, wird kein Pager zum scrollen durch die Logs mehr verwendet.

journalctl --no-pager

Mit der Option -o können wir das Ausgabeformat ändern. In diesem Fall auf json.

journalctl -o json

Folgende Ausgabeformate stehen zur Verfügung.

cat Zeigt nur das Meldungsfeld selbst an.
export Ein Binärformat, das sich zum Übertragen oder Sichern eignet.
json Standard-JSON mit einem Eintrag pro Zeile.
json-pretty JSON, das für eine bessere menschliche Lesbarkeit formatiert ist.
json-sse JSON-formatierte Ausgabe, die eingehüllt ist, um das Hinzufügen von vom Server gesendeten Ereignissen zu ermöglichen.
short Die Standardausgabe im syslog-Stil.
short-iso Das Standardformat, das zum Anzeigen von ISO-8601 Wallclock-Zeitstempeln erweitert wurde.
short-monotonic Das Standardformat mit monotonen Zeitstempeln.
short-precise Das Standardformat mit Mikrosekundengenauigkeit.
verbose Zeigt jedes für den Eintrag verfügbare Journalfeld an, einschließlich derjenigen, die normalerweise intern verborgen sind.

Mit der Option -n lassen sich die letzten 10 Zeilen anzeigen. Setzt man dahinter eine Nummer, werden die Anzahl der gesetzten Nummer angezeigt. Ähnlich dem tail -n Befehl.

journalctl -n

oder

journalctl -n 20

Die Option -f funktioniert genau wie der Befehl tail -f. Zur Laufzeit können die Logs angesehen werden.

journalctl -f

Dokumentationen