So gehe ich bei der Fehlersuche vor#
Bevor es um einzelne Befehle geht, hier die Reihenfolge, die sich bei mir bewährt hat:
- Status prüfen: Mit
systemctl status dienstnamesiehst du, ob der Dienst läuft, und bekommst gleich die letzten Logzeilen dazu. - Logs des Dienstes lesen: Mit
journalctl -u dienstname -n 50schaust du dir die letzten 50 Einträge genauer an. - Nach Fehlern filtern: Mit
journalctl -p err -bfindest du alle Fehler seit dem letzten Start, auch die von anderen Diensten. - Hardware ausschließen: Mit
dmesg -T --level=err,warnprüfst du, ob Festplatten, Arbeitsspeicher oder Treiber Probleme melden.
In den meisten Fällen hast du die Ursache spätestens nach Schritt 3 gefunden.
Dienste prüfen mit systemctl#
| Befehl | Beschreibung |
|---|---|
systemctl status nginx | Zeigt den Zustand eines Dienstes und die letzten Logzeilen. |
systemctl --failed | Listet alle Dienste auf, die nicht starten konnten. |
systemctl list-units --type=service --state=running | Zeigt alle laufenden Dienste. |
Logs lesen mit journalctl#
Grundlagen#
| Befehl | Beschreibung |
|---|---|
journalctl | Zeigt das komplette Journal, die ältesten Einträge zuerst. |
journalctl -e | Springt direkt ans Ende, also zu den neuesten Einträgen. |
journalctl -n 50 | Zeigt nur die letzten 50 Einträge. |
journalctl -f | Zeigt neue Einträge live an. Beenden mit Strg+C. |
journalctl -xe | Zeigt die neuesten Einträge mit zusätzlichen Erklärungen. |
Nach Dienst filtern#
| Befehl | Beschreibung |
|---|---|
journalctl -u nginx | Zeigt nur die Logs eines bestimmten Dienstes. |
journalctl -u nginx -f | Verfolgt die Logs eines Dienstes live. |
journalctl -u nginx -u php8.2-fpm | Zeigt die Logs mehrerer Dienste zusammen. |
journalctl _PID=1234 | Zeigt die Einträge eines bestimmten Prozesses. |
Nach Zeit filtern#
| Befehl | Beschreibung |
|---|---|
journalctl --since "1 hour ago" | Zeigt alle Einträge der letzten Stunde. |
journalctl --since today | Zeigt alle Einträge von heute. |
journalctl --since "2026-11-01 08:00" --until "2026-11-01 12:00" | Zeigt einen bestimmten Zeitraum. |
Nach Systemstart filtern#
| Befehl | Beschreibung |
|---|---|
journalctl -b | Zeigt alle Einträge seit dem letzten Start. |
journalctl -b -1 | Zeigt die Einträge des vorherigen Starts. Ideal, wenn der Server abgestürzt ist. |
journalctl --list-boots | Listet alle gespeicherten Systemstarts auf. |
Nach Wichtigkeit filtern#
| Befehl | Beschreibung |
|---|---|
journalctl -p err | Zeigt nur Fehler und alles, was noch schlimmer ist. |
journalctl -p warning -b | Zeigt Warnungen und Fehler seit dem letzten Start. |
journalctl -k | Zeigt nur Meldungen des Kernels. |
Die Stufen reichen von emerg über alert, crit, err, warning, notice und info bis debug. Wenn du eine Stufe angibst, siehst du sie und alle wichtigeren.
Nach Text suchen#
Mit -g durchsuchst du das Journal direkt nach einem Begriff:
journalctl -u nginx -g "error"Alternativ geht es auch klassisch mit grep:
journalctl -u nginx --no-pager | grep -i errorJournal verwalten#
| Befehl | Beschreibung |
|---|---|
journalctl --disk-usage | Zeigt, wie viel Speicherplatz das Journal belegt. |
journalctl --vacuum-time=2weeks | Löscht alle Einträge, die älter als zwei Wochen sind. |
journalctl --vacuum-size=500M | Verkleinert das Journal auf höchstens 500 MB. |
Funktioniert journalctl -b -1 bei dir nicht, speichert dein System das Journal nur im Arbeitsspeicher, und nach einem Neustart ist alles weg. Mit diesen zwei Befehlen machst du es dauerhaft:
mkdir -p /var/log/journal && systemctl restart systemd-journald
Kernel-Meldungen mit dmesg#
| Befehl | Beschreibung |
|---|---|
dmesg -T | Zeigt die Kernel-Meldungen mit lesbarer Uhrzeit. |
dmesg -T --level=err,warn | Zeigt nur Fehler und Warnungen. |
dmesg -w | Zeigt neue Meldungen live an, zum Beispiel beim Einstecken einer Festplatte. |
Klassische Logdateien#
Viele Programme schreiben zusätzlich eigene Logdateien nach /var/log:
| Datei | Inhalt |
|---|---|
/var/log/syslog | Allgemeine Systemmeldungen, falls rsyslog installiert ist. |
/var/log/auth.log | Anmeldungen, sudo und SSH-Zugriffe. |
/var/log/apt/history.log | Welche Pakete wann installiert oder aktualisiert wurden. |
/var/log/nginx/error.log | Fehler des Webservers Nginx. |
Neuere Debian-Versionen installieren rsyslog nicht mehr standardmäßig. Dann gibt es keine syslog und keine auth.log, und alles landet nur im Journal.
So liest du die Dateien am besten:
tail -n 50 /var/log/nginx/error.log
tail -f /var/log/nginx/error.log
grep -i "failed" /var/log/auth.logDer erste Befehl zeigt die letzten 50 Zeilen, der zweite verfolgt neue Einträge live, und der dritte sucht nach fehlgeschlagenen Anmeldungen.
Läuft dein Dienst in einem Container, findest du die passenden Befehle in meiner Übersicht der Docker-Befehle.

