===== 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}} ----