Der Befehl systemctl steuert systemd – das Init-System und den Dienstmanager moderner Distributionen. Damit listest du laufende Dienste auf, startest sie, stoppst sie und prüfst ihren Status.
Was ist systemd?
Systemd verwaltet den gesamten Boot-Prozess und alle Hintergrunddienste deines Systems. Ob Webserver, SSH oder Cron – systemd startet und überwacht diese Prozesse.
Systemd arbeitet mit sogenannten Units. Eine Unit ist eine Konfigurationsdatei, die einen Dienst, einen Mount-Punkt, ein Gerät oder eine andere Ressource beschreibt. Dienste haben die Endung .service.
Laufende Dienste auflisten
Um alle geladenen Dienste anzuzeigen:
systemctl list-units --type service
Die Ausgabe zeigt eine Tabelle mit folgenden Spalten:
| Spalte | Bedeutung |
|---|---|
UNIT | Name der Diensteinheit |
LOAD | Ob die Unit-Datei geladen wurde |
ACTIVE | Aktivierungsstatus (active, inactive, failed) |
SUB | Detaillierter Unterstatus (running, exited, dead) |
DESCRIPTION | Kurzbeschreibung des Dienstes |
Standardmäßig siehst du nur aktive Dienste. Um auch inaktive anzuzeigen:
systemctl list-units --type service --all
Alle installierten Dienste anzeigen
Die vorherigen Befehle zeigen nur geladene Units. Um alle installierten Unit-Dateien zu sehen – unabhängig davon, ob sie aktiv sind:
systemctl list-unit-files --type service
Die Spalte STATE zeigt, ob ein Dienst beim Systemstart aktiviert (enabled) oder deaktiviert (disabled) ist.
Status eines Dienstes prüfen
Der Befehl systemctl status liefert detaillierte Informationen zu einem bestimmten Dienst:
systemctl status nginx
Die Endung .service kannst du weglassen – systemctl status nginx und systemctl status nginx.service sind gleichwertig.
Die Ausgabe enthält:
- Loaded: Pfad zur Unit-Datei und ob der Dienst beim Boot startet
- Active: Aktueller Status und Laufzeit
- Main PID: Prozess-ID des Hauptprozesses
- Tasks: Anzahl der laufenden Tasks
- Memory: Speicherverbrauch
- CGroup: Zugehörige Control Group
Ein grüner Punkt (●) signalisiert einen aktiven Dienst, ein roter einen fehlgeschlagenen.
Schnelle Statusabfrage
Für Skripte oder schnelle Prüfungen reicht oft ein einfacher Statuscheck:
systemctl is-active nginx
Der Befehl gibt active oder inactive aus. Der Exit-Code ist 0 bei aktivem Dienst – praktisch für Shell-Skripte:
if systemctl is-active --quiet nginx; then
echo "Nginx läuft"
fi
Die Option --quiet unterdrückt die Textausgabe und liefert nur den Exit-Code.
Dienste starten und stoppen
Einen Dienst starten:
sudo systemctl start nginx
Einen Dienst stoppen:
sudo systemctl stop nginx
Einen Dienst neu starten:
sudo systemctl restart nginx
Konfiguration neu laden, ohne den Dienst zu unterbrechen:
sudo systemctl reload nginx
Autostart aktivieren und deaktivieren
Damit ein Dienst beim Systemstart automatisch läuft:
sudo systemctl enable nginx
Autostart deaktivieren:
sudo systemctl disable nginx
Um einen Dienst gleichzeitig zu starten und für den Autostart zu aktivieren:
sudo systemctl enable --now nginx
Zusammenfassung
| Befehl | Funktion |
|---|---|
systemctl list-units --type service | Aktive Dienste auflisten |
systemctl list-unit-files --type service | Alle installierten Dienste anzeigen |
systemctl status dienst | Detaillierten Status anzeigen |
systemctl is-active dienst | Schneller Statuscheck |
systemctl start/stop/restart dienst | Dienst starten, stoppen, neu starten |
systemctl enable/disable dienst | Autostart aktivieren oder deaktivieren |
Mit systemctl hast du die volle Kontrolle über die Dienste deines Systems.