Logs (journalctl, /var/log)
Prozesse & System
Warum Logs wichtig sind
Wenn etwas nicht funktioniert – ein Dienst startet nicht, eine Webseite ist nicht erreichbar, das System verhält sich seltsam – sind die Logs deine erste Anlaufstelle. Sie protokollieren, was Programme und der Kernel tun: Startmeldungen, Warnungen, Fehler. Wer Logs lesen kann, löst Probleme oft in Minuten statt Stunden. Unter Linux gibt es zwei große Welten: das klassische /var/log/ und das moderne Journal von systemd.
journalctl: das systemd-Journal
Auf systemd-Systemen sammelt der journald-Dienst alle Meldungen zentral. Du liest sie mit journalctl. Ohne Argumente zeigt es das gesamte Journal (mit q verlassen):
# journalctl # alles, älteste zuerst # journalctl -e # ans Ende springen # journalctl -r # neueste zuerst
Am nützlichsten sind die Filter. Mit -u filterst du nach einer Unit, mit -f (follow) verfolgst du neue Meldungen live – ideal beim Testen:
# journalctl -u nginx # nur Logs von nginx # journalctl -u nginx -f # live mitlesen # journalctl -u nginx --since "1 hour ago" # journalctl -p err -b # nur Fehler, aktueller Boot
| Option | Bedeutung |
|---|---|
-u NAME | Nur diese Unit |
-f | Live verfolgen (follow) |
-b | Nur aktueller Bootvorgang |
--since / --until | Zeitraum eingrenzen |
-p err | Nach Priorität filtern |
Klassische Logs in /var/log/
Viele Programme schreiben weiterhin in Textdateien unter /var/log/. Diese liest du mit den üblichen Werkzeugen wie less, tail oder grep.
$ ls /var/log/ auth.log syslog nginx/ kern.log dmesg $ tail -f /var/log/nginx/access.log # live mitlesen $ grep -i error /var/log/syslog
Wichtige Dateien sind auth.log (Anmeldungen, sudo), syslog (allgemein) und distributionsabhängig messages.
dmesg: Kernel-Meldungen
Der Befehl dmesg zeigt den Ringpuffer des Kernels – besonders nützlich bei Hardware-Problemen, neuen USB-Geräten oder Festplattenfehlern.
# dmesg -T | tail # mit lesbaren Zeitstempeln # dmesg -w # neue Meldungen verfolgen
logrotate: Logs unter Kontrolle
Logdateien würden ohne Gegenmaßnahmen unbegrenzt wachsen und irgendwann die Festplatte füllen. logrotate löst das: Es rotiert Logs regelmäßig (benennt sie um, komprimiert sie und löscht alte). Die Konfiguration liegt in /etc/logrotate.conf und /etc/logrotate.d/.
/var/log/myapp/*.log {
daily
rotate 14
compress
missingok
notifempty
}
Das systemd-Journal begrenzt seine Größe selbst – prüfen mit journalctl --disk-usage, aufräumen mit journalctl --vacuum-time=2weeks.
Hinweise & Sicherheit
Logs enthalten oft sensible Informationen: IP-Adressen, Benutzernamen, manchmal versehentlich auch Passwörter. Daher sind viele Logdateien nur für root oder die Gruppe adm/systemd-journal lesbar – gib diese Rechte nicht leichtfertig weiter. Für die Sicherheit ist auth.log bzw. journalctl -u sshd Gold wert: Hier siehst du fehlgeschlagene Login-Versuche und kannst Angriffe erkennen. Wie du dein System gegen solche Angriffe absicherst, liest du unter Server-Härtung.