===== systemctl status =====
**Kurzfassung:** ''systemctl status'' zeigt den aktuellen Zustand und detaillierte Informationen zu Systemdiensten an, inklusive Status, PID, Ressourcennutzung und letzten Logs. Zielgruppe: Systemadministratoren zur Diagnose und Überwachung von Services.
==== Übersicht ====
Der Befehl ''systemctl status'' ist ein essentielles Diagnostik-Tool zur Überprüfung von Systemdiensten. Er liefert Informationen wie:
* Aktuellen Status (running, stopped, failed, etc.)
* Konfiguration (enabled, disabled, static)
* Main Process ID (PID) und Worker-Prozesse
* Speicher- und CPU-Nutzung
* Die letzten Systemd-Log-Einträge
==== Voraussetzungen ====
* systemd als Init-System aktiv
* Service/Unit muss vorhanden sein
* Keine Privilegien erforderlich (lesender Zugriff)
==== Anleitung ====
=== Grundlegende Statusabfrage ===
# Status eines Services abfragen
systemctl status nginx
# Status eines Services ohne Pagination
systemctl status --no-pager nginx
# Status ohne letzte Logs
systemctl status --no-legend nginx
=== Interpretation der Ausgabe ===
Die Ausgabe gliedert sich in folgende Bereiche:
**Service-Identifikation:**
● nginx.service - A high performance web server and a reverse proxy server
Zeigt Unit-Name (nginx.service) und Beschreibung.
**Loaded-Zeile:**
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: enabled)
* ''loaded'': Unit-Datei gefunden und geparsed
* Pfad zur Unit-Datei
* ''enabled'': Service startet beim Boot
* ''preset'': Vordefinierte Konfiguration
**Active-Zeile:**
Active: active (running) since Fri 2026-01-30 19:38:32 CET; 10min ago
* ''active'': Service läuft
* ''(running)'': Genauer Status-Typ
* Zeitstempel des letzten State-Wechsels
* Uptime seit letztem Start
=== Prozess- und Ressourceninformationen ===
# Zeigt PID und Prozessbaum
systemctl status nginx | grep -A 20 "CGroup"
# Nur Memory-Nutzung
systemctl status nginx | grep Memory
# Nur CPU-Zeit
systemctl status nginx | grep CPU
**Beispiel-Analyse:**
Process: 4617 ExecStartPre=/usr/sbin/nginx -t -q (code=exited, status=0/SUCCESS)
Process: 4619 ExecStart=/usr/sbin/nginx -g daemon on (code=exited, status=0/SUCCESS)
Main PID: 4653 (nginx)
Tasks: 7 (limit: 9422)
Memory: 5.0M (peak: 11.3M)
CPU: 48ms
* ExecStartPre: Vorbedingung erfolgreich (status=0)
* ExecStart: Service gestartet erfolgreich
* Main PID 4653: Hauptprozess-ID
* 7 Tasks: 1 Master + 6 Worker-Prozesse
* Memory: Aktuell 5.0M, Peak 11.3M
* CPU: 48ms CPU-Zeit verbraucht seit Start
=== Status-Kodierungen ===
**Active-Status:**
# Nur Wort ("active" oder "inactive")
systemctl is-active nginx
# Mit aussagekräftigen Typen:
# active (running) - Service läuft
# active (exited) - Service beendet, aber erfolgreich
# active (waiting) - Service wartet auf Events
# inactive (dead) - Service läuft nicht
# failed - Fehler beim Start
# activating/deactivating - Übergang läuft
=== Exit-Codes verstehen ===
code=exited, status=0/SUCCESS → Erfolgreich beendet
code=exited, status=1/FAILURE → Mit Fehler beendet
code=signal, signal=15/TERM → Durch SIGTERM beendet
code=signal, signal=9/KILL → Durch SIGKILL beendet
=== Detaillierte Informationen ===
# Alle Unit-Eigenschaften anzeigen
systemctl show nginx
# Spezifische Eigenschaften
systemctl show -p MainPID -p MemoryCurrent -p CPUUsageNSec nginx
# Abhängigkeiten
systemctl show -p Requires -p Requisite -p Wants nginx
=== Status mit Logs kombinieren ===
# Status anzeigen, dann in Logs navigieren
systemctl status nginx
journalctl -u nginx -n 20 -e
# Nur Fehler-Logs anzeigen
journalctl -u nginx -p err
# Logs seit letztem Systemd-Start
journalctl -u nginx -b
=== Automatisierte Status-Abfragen ===
# Status in JSON-Format
systemctl show nginx --output=json
# Mehrere Services gleichzeitig
systemctl status nginx mysql postgresql
# Status und Exit-Code für Scripting
if systemctl is-active --quiet nginx; then
echo "nginx läuft"
else
echo "nginx nicht aktiv"
fi
==== Häufige Status-Probleme ====
=== Service ist "failed" ===
# 1. Logs zur Fehlerursache prüfen
journalctl -u nginx -b --priority=err
# 2. Unit-Datei validieren
systemctl cat nginx | systemd-analyze verify -
# 3. Service zurücksetzen und erneut starten
sudo systemctl reset-failed nginx
sudo systemctl start nginx
=== Service ist "inactive" obwohl enabled ===
# Aktivierungsstatus prüfen
systemctl is-enabled nginx
# Logs auf Boot-Fehler prüfen
journalctl -u nginx -b | head -20
# Abhängigkeiten prüfen
systemctl list-dependencies nginx
=== Sehr hohe Memory/CPU-Nutzung ===
# Resource-Limits anzeigen
systemctl show -p MemoryLimit -p CPUQuota nginx
# Prozessbaum detailliert
ps -ef | grep nginx
# Top mit nur diesem Service
top -p $(systemctl show -p MainPID --value nginx)
==== Hinweise ====
**Best Practices:**
- ''systemctl status'' ohne Weitergabe liefert visuell farbcodierte Ausgabe
- Für Scripting ''is-active'', ''is-enabled'' verwenden (einfach parsbar)
- ''journalctl'' immer zur Detailanalyse kombinieren
- Exit-Codes (status=0) vs Signal-Codes (signal=15) unterscheiden
- Memory-Peak zeigt Spitzenlast, nicht aktuell verbrauchten RAM
**Häufige Fehler vermeiden:**
- ''status=0'' bedeutet Erfolg, nicht Fehler!
- Nicht alle Status-Wechsel sind Fehler (normal: exited nach Start)
- High Memory = Peak, nicht aktueller Verbrauch
- Task-Limit nicht mit PID-Limit verwechseln
- ''failed'' bedeutet: ''reset-failed'' vor erneutem Start nötig
==== Siehe auch ====
* [[sammlung:systemctl|systemctl]]
* [[sammlung:journalctl|journalctl]]
* [[sammlung:systemd|systemd]]
* [[sammlung:ps|ps]]
* [[sammlung:top|top]]
==== Quellen ====
* [[https://man7.org/linux/man-pages/man1/systemctl.1.html|systemctl - man page]]
* [[https://www.freedesktop.org/software/systemd/man/systemctl.html|systemd Documentation]]
* [[https://www.freedesktop.org/software/systemd/man/systemd.service.html|systemd.service]]
----
{{tag>cli systemctl status diagnostics systemd troubleshooting}}
----