Linux journalctl-Befehl
Was ist journalctl?
journalctl ist ein leistungsstarkes Werkzeug in Linux zum Abfragen und Anzeigen von systemd-Protokollen. Als Teil des systemd-Ökosystems bietet es eine zentrale Protokollverwaltung und ersetzt den traditionellen syslog-Dienst.
Kernfunktionen
- Binäre Log-Speicherung: Logs werden im Binärformat gespeichert, um die Abrufeffizienz zu verbessern.
- Strukturierte Logs: Unterstützt das Anhängen von Metadaten und strukturierten Log-Feldern.
- Echtzeitüberwachung: Kann Log-Änderungen in Echtzeit verfolgen.
- Mehrere Filtermethoden: Unterstützt das Filtern nach Zeit, Dienst, Priorität und vielen weiteren Bedingungen.
Grundlegende Syntax
Das grundlegende Befehlsformat für journalctl lautet wie folgt:
journalctl [选项] [匹配条件...]
Übersicht über gängige Optionen
| Option | Beschreibung |
|---|---|
-b |
Logs des aktuellen Systemstarts anzeigen |
-f |
Logs verfolgen (ähnlich wie tail -f) |
-k |
Nur Kernel-Meldungen anzeigen |
-u |
Logs für eine angegebene Unit anzeigen |
-n |
Die neuesten n Log-Einträge anzeigen |
--since |
Logs nach einer angegebenen Zeit anzeigen |
--until |
Protokolle vor einem angegebenen Zeitpunkt anzeigen |
Häufige Anwendungsbeispiele
1. Vollständige Systemprotokolle anzeigen
Beispiel
journalctl
2. Protokolle für den aktuellen Bootvorgang anzeigen
Beispiel
journalctl -b
3. Neue Protokolle in Echtzeit überwachen
Beispiel
journalctl -f
4. Protokolle für einen bestimmten Dienst anzeigen
Beispiel
journalctl -u nginx.service
5. Nach Zeitraum abfragen
Beispiel
journalctl --since "2023-01-01 00:00:00" --until "2023-01-02 12:00:00"
6. Protokolle auf Fehlerstufe anzeigen
Beispiel
journalctl -p err
Filterung nach Protokollpriorität
journalctl unterstützt das Filtern nach Log-Priorität. Die Prioritäten sind wie folgt definiert:
| Priorität | Wert | Beschreibung |
|---|---|---|
| emerg | 0 | Notfall |
| alert | 1 | Erfordert sofortige Bearbeitung |
| crit | 2 | Kritisch |
| err | 3 | Fehler |
| warning | 4 | Warnung |
| notice | 5 | Hinweis |
| Info | 6 | Informativ |
| debug | 7 | Debug |
Anwendungsbeispiele:
Beispiel
# Protokolle auf Fehlerstufe und höher anzeigen
journalctl -p err
# Protokolle auf Warnstufe und höher anzeigen
journalctl -p Warnung
journalctl -p err
# Protokolle auf Warnstufe und höher anzeigen
journalctl -p Warnung
Erweiterte Nutzung
1. Belegten Speicherplatz von Logs anzeigen
Beispiel
journalctl --disk-usage
2. Alte Logs bereinigen
Beispiel
# Logs der letzten 2 Tage behalten
journalctl --vacuum-time=2d
# Maximale Log-Nutzung auf 500MB begrenzen
journalctl --vacuum-size=500M
journalctl --vacuum-time=2d
# Maximale Log-Nutzung auf 500MB begrenzen
journalctl --vacuum-size=500M
3. Ausgabe im JSON-Format
Beispiel
journalctl -o json
4. Vollständige Feldinformationen anzeigen
Beispiel
journalctl -o verbose
5. Nach einem bestimmten Feld filtern
Beispiel
# Protokolle für eine bestimmte Prozess-ID anzeigen
journalctl _PID=1234
# Protokolle für einen bestimmten Benutzer anzeigen
journalctl _UID=1000
journalctl _PID=1234
# Protokolle für einen bestimmten Benutzer anzeigen
journalctl _UID=1000
Praktische Tipps
1. Kombinierte Abfragen
Beispiel
# Fehlerprotokolle für den nginx-Dienst seit gestern abfragen
journalctl -u nginx.service --since yesterday -p err
journalctl -u nginx.service --since yesterday -p err
2. Anzeige mit Paging
Beispiel
journalctl | less
3. Protokolle in Datei exportieren
Beispiel
journalctl --since "2023-01-01" > journal.log
4. Kernel-Ringpuffer-Meldungen anzeigen
Beispiel
journalctl -k
5. Protokolle des Systemstartvorgangs anzeigen
Beispiel
journalctl -b0 | grep "Starting"
Problemlösungen
Problem 1: Unvollständige Protokollanzeige
Lösung:
Beispiel
# Ausgabezeilenlimit erhöhen
journalctl --no-pager
journalctl --no-pager
Problem 2: Wie kann man rotierte alte Protokolle anzeigen?
Lösung:
Beispiel
# Alle Protokolle anzeigen (einschließlich archivierter)
journalctl -a
journalctl -a
Problem 3: Wie kann man Protokolle zu einem bestimmten Zeitpunkt anzeigen?
Lösung:
Beispiel
# Zeitabfrage sekundengenau
journalctl --since "2023-01-01 12:00:00" --until "2023-01-01 12:05:00"
journalctl --since "2023-01-01 12:00:00" --until "2023-01-01 12:05:00"
Zusammenfassungs-Flussdiagramm

Linux-Befehlsreferenz