Linux systemctl-Befehl

Linux 命令大全Linux-Befehlsreferenz


Was ist systemctl

systemctl ist ein Kommandozeilenwerkzeug in Linux-Systemen, das verwendet wird, um den systemd-System- und Dienstmanager zu steuern. Als Kernkomponente moderner Linux-Distributionen ersetzt es das traditionelle init-System und die Dienstbefehle.

Einführung in systemd

systemd ist ein System- und Dienstmanager, der:

  • Läuft als PID 1 (der erste Prozess, der gestartet wird)
  • Verantwortlich für das Starten, Stoppen und Verwalten aller anderen Prozesse
  • Bietet die Möglichkeit zum parallelen Starten, wodurch die Systemstartzeit erheblich verkürzt wird
  • Unterstützt bedarfsgesteuertes Starten von Diensten
  • Bietet Funktionen zur Protokollerfassung (über journald)

Grundlegende systemctl-Syntax

systemctl [选项] [命令] [单元名称]

Häufige Optionen

Option Beschreibung
-t, --type Unit-Typ angeben (service, socket, device usw.)
-a, --all Alle Units anzeigen, einschließlich inaktiver
--state Units nach Status filtern
-l, --full Vollständige Unit-Informationen anzeigen
-H, --host Auf einem Remote-Host ausführen

Befehle zur Dienstverwaltung

Dienste starten/stoppen/neu starten

Beispiel

# Service starten
sudo systemctl start [Dienstname]

# Dienst stoppen
sudo systemctl stop [Dienstname]

# Dienst neu starten
sudo systemctl restart [Dienstname]

# Konfiguration neu laden (ohne Neustart des Dienstes)
sudo systemctl reload [Dienstname]

Dienststatus anzeigen

Beispiel

# Status eines einzelnen Dienstes anzeigen
systemctl status [Dienstname]

# Alle laufenden Dienste anzeigen
systemctl list-units --type=service --state=running

# Fehlgeschlagene Dienste anzeigen
systemctl --failed

Dienste aktivieren/deaktivieren

Beispiel

# Dienst aktivieren (automatischer Start beim Booten)
sudo systemctl enable [Dienstname]

# Dienst deaktivieren (Autostart beim Booten aufheben)
sudo systemctl disable [Dienstname]

# Prüfen, ob Dienst aktiviert ist
systemctl is-enabled [Dienstname]

Unit-Datei-Verwaltung

Speicherorte der Unit-Dateien

  • System-Units:/usr/lib/systemd/system/
  • Benutzerdefinierte Units des Administrators:/etc/systemd/system/

Gängige Unit-Datei-Operationen

Beispiel

# Alle Unit-Dateien neu laden (erforderlich nach Änderung der Konfiguration)
sudo systemctl daemon-reload

# Inhalt der Unit-Datei anzeigen
systemctl cat [Unit-Name]

# Unit-Datei bearbeiten (erstellt eine Override-Datei)
sudo systemctl edit [Unit-Name] --full

Systemzustandsverwaltung

System-Energieverwaltung

Beispiel

# Herunterfahren
sudo systemctl poweroff

# Neustart
sudo systemctl reboot

# Suspendieren
sudo systemctl suspend

# Ruhezustand
sudo systemctl hibernate

System-Runlevels

Beispiel

# Aktuelles Target (Runlevel) abrufen
systemctl get-default

# Standard-Target festlegen
sudo systemctl set-default [Target-Name]

# Target wechseln (wirkt sofort)
sudo systemctl isolate [Target-Name]

Übliche Targets:

  • graphical.target - grafischer Oberflächenmodus
  • multi-user.target - Mehrbenutzer-Textmodus
  • rescue.target - Rettungsmodus
  • emergency.target - Notfallmodus

Praktische Beispiele

Beispiel 1: Nginx-Dienst verwalten

Beispiel

# Nginx starten
sudo systemctl start nginx

# Automatischen Start beim Booten aktivieren
sudo systemctl enable nginx

# Status prüfen
systemctl status nginx

# Konfiguration testen, dann neu laden
sudo nginx -t  # Konfiguration zuerst testen
sudo systemctl reload nginx

Beispiel 2: Einen benutzerdefinierten Dienst erstellen

  1. Dienstdatei erstellen/etc/systemd/system/myapp.service:

Beispiel

[Unit]
Description=Meine benutzerdefinierte Anwendung
After=network.target

[Service]
ExecStart=/usr/bin/python3 /opt/myapp/app.py
WorkingDirectory=/opt/myapp
User=myappuser
Group=myappgroup
Restart=always

[Installation]
WantedBy=multi-user.target
  1. Dienst aktivieren und starten:

Beispiel

sudo systemctl daemon-reload
sudo systemctl enable myapp
sudo systemctl start myapp

Fehlerbehebung bei häufigen Problemen

Dienst konnte nicht gestartet werden

  1. Detaillierte Protokolle anzeigen:

    journalctl -u [服务名] -xe
  2. Abhängigkeiten prüfen:

    systemctl list-dependencies [服务名]
  3. Im Debug-Modus ausführen:

    systemctl status [服务名] -l --no-pager

Leistungsanalyse

Beispiel

# Systemstartzeit anzeigen
systemd-analyze

# Startzeit jedes Dienstes anzeigen
systemd-analyze blame

# Startdiagramm generieren (erfordert grafische Oberfläche)
systemd-analyze plot > boot.svg

Linux 命令大全Linux-Befehlsreferenz

Andere Erweiterungen