===== systemctl =====
**Kurzfassung:** systemctl ist das zentrale Verwaltungstool für systemd und verwaltet Systemdienste (Units), deren Start/Stop, Autostart und Status. Zielgruppe: Systemadministratoren und Benutzer zur Verwaltung von Systemdiensten.
==== Übersicht ====
systemctl ist der Hauptbefehl des systemd-Init-Systems zur Verwaltung von Systemdiensten, Sockets, Geräten und anderen "Units". Damit lassen sich Services starten, stoppen, neu starten, aktivieren und ihr Status abfragen. systemctl ersetzt die alten init-Skripte und bietet eine einheitliche Schnittstelle.
==== Voraussetzungen ====
* systemd als Init-System installiert und aktiv
* Root-Privilegien oder Sudo für bestimmte Operationen
* Kenntnis der verfügbaren Unit-Namen (Services, Targets, etc.)
==== Anleitung ====
=== Services starten und stoppen ===
# Service starten
sudo systemctl start nginx
# Service stoppen
sudo systemctl stop nginx
# Service neustarten
sudo systemctl restart nginx
# Service nur neu laden (ohne Interrupt)
sudo systemctl reload apache2
=== Service-Status abfragen ===
# Status eines spezifischen Services
systemctl status sshd
# Alle Services auflisten
systemctl list-units --type=service
# Nur aktive Services anzeigen
systemctl list-units --type=service --state=running
# Fehlerhafte Services finden
systemctl list-units --type=service --state=failed
=== Autostart aktivieren und deaktivieren ===
# Service beim Booten automatisch starten
sudo systemctl enable nginx
# Service nicht mehr beim Booten starten
sudo systemctl disable nginx
# Autostart-Status abfragen
systemctl is-enabled nginx
=== Services aktivieren und deaktivieren ===
# Service aktivieren (für aktuelle Session)
sudo systemctl start nginx
# Service deaktivieren (für aktuelle Session)
sudo systemctl stop nginx
# Service maskieren (verhindert manuellen und automatischen Start)
sudo systemctl mask nginx
# Service unmaskieren
sudo systemctl unmask nginx
=== Dependency-Informationen und Auslöser ===
# Unit-Abhängigkeiten anzeigen
systemctl list-dependencies nginx
# Unit-Abhängigkeiten für Targets
systemctl list-dependencies multi-user.target
=== Systemstart und Runlevel ===
# Systemrunlevel anzeigen
systemctl get-default
# Standardrunlevel ändern
sudo systemctl set-default multi-user.target
# In Runlevel wechseln
sudo systemctl isolate graphical.target
# Verfügbare Targets anzeigen
systemctl list-units --type=target
=== Logs und Diagnostik ===
# Logs einer Unit anzeigen
journalctl -u nginx
# Logs in Echtzeit verfolgen
journalctl -u nginx -f
# Letzte 50 Zeilen
journalctl -u nginx -n 50
# Logs seit letztem Boot
journalctl -u nginx -b
=== Systemd-Unit-Dateieinstellung ===
# Unit-Datei bearbeiten
sudo systemctl edit nginx
# Neue Unit-Datei mit Editor
sudo systemctl edit --full nginx
# Unit-Datei-Änderungen neu laden
sudo systemctl daemon-reload
==== Hinweise ====
**Best Practices:**
- Immer ''sudo systemctl daemon-reload'' ausführen, nachdem Unit-Dateien geändert wurden
- Mit ''systemctl is-active '' schnell den Status checken
- ''systemctl show '' zeigt detaillierte Informationen
- Logs mit ''journalctl'' kombinieren für vollständige Diagnostik
**Häufige Fehler vermeiden:**
- ''sudo systemctl mask'' verhindert auch Starts durch Abhängigkeiten (sparsam nutzen)
- Nach Konfigurationsänderungen ''reload'' verwenden, wenn möglich (weniger Unterbrechung als ''restart'')
- Unit-Namen sind case-sensitive
==== Siehe auch ====
* [[kommandoreferenz:prozessverwaltung|Prozessverwaltung]]
* [[kommandoreferenz:terminal|Terminal]]
* [[kommandoreferenz:server|Server]]
* [[sammlung:systemd|systemd]]
* [[sammlung:journalctl|journalctl]]
==== Quellen ====
* [[https://man7.org/linux/man-pages/man1/systemctl.1.html|systemctl - man page]]
* [[https://www.freedesktop.org/software/systemd/man/systemctl.html|systemd Dokumentation]]
----
{{tag>cli systemctl systemd services daemon-management}}
----