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