systemctl Service-Liste erklärt: Wie man Linux-Dienste anzeigt, verwaltet und Fehler behebt

目次

1. Einführung

Beim Einsatz von Linux gibt es viele Situationen, in denen Sie den Status von Diensten überprüfen oder eine Liste laufender Prozesse anzeigen möchten. In solchen Fällen ist der Befehl systemctl äußerst nützlich.

Dieser Befehl funktioniert mit systemd, dem Startsystem und Dienstmanager, der in modernen Linux-Distributionen verwendet wird. Er bietet eine breite Palette von Funktionen, einschließlich der Überprüfung des Dienststatus (Units), des Startens, Stoppens, Neustartens von Diensten und der Anzeige von Dienstlisten.

Aus der Perspektive einer „systemctl-Dienstliste“ können Sie nicht nur aktive Dienste anzeigen, sondern auch deaktivierte Dienste und solche, die für den automatischen Start konfiguriert sind, was Ihnen ermöglicht, die Gesamtsystemkonfiguration aus mehreren Blickwinkeln zu verstehen.

Dieses Kapitel erklärt kurz, was systemctl ist, und gibt einen Überblick darüber, was Sie in diesem Artikel lernen werden.

Was ist systemctl?

systemctl ist das Standardwerkzeug zur Steuerung und Überprüfung verschiedener „Units“ wie Dienste, Ziele und Mount-Punkte in systemd-basierten Linux-Distributionen.

Es wird beispielsweise verwendet, um Dienste wie Apache (httpd) und SSH zu starten oder zu stoppen sowie ihren Status in Listenform anzuzeigen.

Die Beziehung zwischen systemd und systemctl

systemd ist der Kernmechanismus, der für Linux-Startprozesse und Dienstverwaltung verantwortlich ist und ältere Systeme wie SysVinit und Upstart ersetzt. Das Kommandozeilenwerkzeug, das zur Interaktion mit systemd verwendet wird, ist systemctl.

Mit anderen Worten: Wenn systemd das Kommandozentrum ist, fungiert systemctl als Bediener, der Anweisungen erteilt.

Was Sie in diesem Artikel lernen werden

Dieser Artikel beantwortet die folgenden Fragen:

  • Wie können Sie eine Liste der derzeit laufenden Dienste anzeigen?
  • Wie zeigen Sie alle Dienste an, einschließlich inaktiver?
  • Wie können Sie überprüfen, ob ein Dienst beim Booten automatisch startet?
  • Wie interpretieren Sie die Ausgabe von Dienstlisten?

Um Klarheit für Linux-Anfänger zu gewährleisten, werden Befehlsbeispiele und Erklärungen der Ausgabe detailliert bereitgestellt.

2. So zeigen Sie eine Liste von Diensten mit systemctl an

In der Linux-Systemadministration ist es äußerst wichtig, schnell die Liste der Dienste zu verstehen. Mit dem Befehl systemctl können Sie leicht aktive Dienste, inaktive Dienste und Startkonfigurationseinstellungen überprüfen.

Dieser Abschnitt erklärt Methoden zur Auflistung von Diensten aus den folgenden drei Perspektiven:

  • Liste aktiver Dienste
  • Liste aller Dienste (einschließlich inaktiver)
  • Liste von Dienst-Unit-Dateien (einschließlich Start-Einstellungen)

2.1 Anzeigen einer Liste der derzeit aktiven Dienste

Um Dienste zu überprüfen, die derzeit laufen, verwenden Sie den folgenden Befehl:

systemctl list-units --type=service

Dieser Befehl zeigt eine Liste aktiver Dienste an. Die Ausgabe umfasst die folgenden Felder:

FieldDescription
UNITService name (e.g., ssh.service)
LOADWhether the unit file is loaded
ACTIVEService state (e.g., active, inactive, failed)
SUBMore detailed status (e.g., running, exited, dead)
DESCRIPTIONService description

Diese Informationen ermöglichen es Ihnen, beispielsweise festzustellen, ob nginx läuft oder welche Dienste derzeit aktiv sind.

2.2 Anzeigen aller Dienste einschließlich inaktiver

Standardmäßig zeigt list-units nur aktive Dienste an. Um inaktive Dienste einzuschließen, fügen Sie die Option --all hinzu.

systemctl list-units --type=service --all

Dies zeigt inaktive Dienste und solche an, die noch nie gestartet wurden.

Sie können die Ergebnisse weiter nach Dienstzustand filtern, indem Sie die Option --state= verwenden:

systemctl list-units --type=service --state=inactive

Dies ist nützlich, wenn Sie nur gestoppte Dienste anzeigen möchten.

2.3 Anzeigen einer Liste von Dienst-Unit-Dateien

Um zu überprüfen, welche Dienste beim Booten aktiviert oder deaktiviert sind, verwenden Sie den folgenden Befehl:

systemctl list-unit-files --type=service

Dieser Befehl zeigt alle Dienst-Unit-Dateien zusammen mit ihrem aktivierten oder deaktivierten Status an.

STATEDescription
enabledAutomatically starts at boot
disabledDoes not start automatically
staticCannot be enabled or disabled manually
maskedExplicitly disabled and cannot be started

Diese Liste hilft Ihnen, visuell zu verstehen, welche Dienste beim Booten starten, und fehlerhaft maskierte Dienste zu identifizieren.

3. Grundlegende Dienstverwaltung mit systemctl

Der Befehl systemctl ermöglicht es Ihnen, Dienste zu starten, zu stoppen, neu zu starten und das Startverhalten zu konfigurieren.

3.1 Einen Dienst starten

sudo systemctl start service-name

Beispiel:

sudo systemctl start httpd.service

3.2 Dienst stoppen

sudo systemctl stop service-name

Beispiel:

sudo systemctl stop sshd.service

3.3 Dienst neu starten

sudo systemctl restart service-name

Beispiel:

sudo systemctl restart nginx.service

3.4 Dienststatus prüfen

systemctl status service-name

Beispiel:

systemctl status mysql.service

3.5 Automatischen Start aktivieren

sudo systemctl enable service-name

Beispiel:

sudo systemctl enable docker.service

3.6 Automatischen Start deaktivieren

sudo systemctl disable service-name

Beispiel:

sudo systemctl disable cups.service

3.7 Startstatus prüfen

systemctl is-enabled service-name
enabled

4. Nützliche systemctl-Optionen und erweiterte Techniken

4.1 Auflisten von Dienstabhängigkeiten

systemctl list-dependencies service-name

4.2 Anzeigen des Inhalts von Unit-Dateien

systemctl cat service-name

4.3 Neuladen von Unit-Dateien

sudo systemctl daemon-reexec
sudo systemctl daemon-reload

4.4 Anzeigen von Dienstprotokollen

journalctl -u service-name

5. Häufige Probleme und Fehlersuche

5.1 Wenn ein Dienst nicht startet

systemctl status service-name
journalctl -xe

5.2 Fehlermeldungen in der Statusausgabe verstehen

● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled)
   Active: failed (Result: exit-code)

5.3 Dienste, die sofort nach dem Starten stoppen

  • Konfigurationsfehler
  • Portkonflikte
  • Fehlende Dateien oder Verzeichnisse
  • Unzureichende Berechtigungen

5.4 Wenn ein Dienst maskiert ist

sudo systemctl unmask service-name

6. Zusammenfassung

Dienstverwaltung ist ein wesentlicher Bestandteil der Linux-Systemoperationen, und systemctl spielt eine zentrale Rolle beim Steuern und Verstehen von Systemdiensten.

7. Häufig gestellte Fragen (FAQ)

Dieser Abschnitt beantwortet gängige Fragen zu systemctl und der Dienstverwaltung.

Q1. Was ist der Unterschied zwischen systemctl und dem Befehl service?

A1.
systemctl ist ein Dienstverwaltungsbefehl, der für systemd‑basierte Systeme entwickelt wurde und das Standardwerkzeug der meisten modernen Linux‑Distributionen wie Ubuntu, CentOS und Fedora ist.
Im Gegensatz dazu wurde der Befehl service bei älteren SysVinit‑basierten Systemen verwendet. Obwohl er aus Kompatibilitätsgründen noch vorhanden sein kann, wird die Verwendung von systemctl in systemd‑Umgebungen dringend empfohlen.

Q2. Was ist der Unterschied zwischen list-units und list-unit-files?

A2.

  • list-units zeigt derzeit geladene Units an, also Dienste, die laufen oder kürzlich verwendet wurden.
  • list-unit-files zeigt alle Unit‑Dateien und deren Aktivierungsstatus (enabled, disabled usw.) an. Kurz gesagt, das eine zeigt, was aktuell aktiv ist, das andere, wie die Dienste konfiguriert sind.

Q3. Können Dienste im statischen Zustand gestartet werden?

A3.
Ja, Dienste im static‑Zustand können manuell mit start gestartet werden. Sie können jedoch nicht für den automatischen Start beim Booten aktiviert werden.
Das liegt daran, dass statische Dienste dafür vorgesehen sind, als Abhängigkeiten anderer Units gestartet zu werden.

Q4. Ein Dienst ist maskiert und kann nicht gestartet werden. Was soll ich tun?

A4.
Ein masked‑Dienst ist vollständig deaktiviert und kann nicht gestartet werden. Um das Problem zu beheben, demaskieren Sie den Dienst mit dem folgenden Befehl:

sudo systemctl unmask service-name

Nach dem Demaskieren können Sie den Dienst wie gewohnt starten.

Q5. Gibt es eine GUI‑Methode, um den Dienststatus anzuzeigen?

A5.
Abhängig von der Distribution ermöglichen Werkzeuge wie gnome-system-monitor, KSysGuard oder Cockpit das Anzeigen des Dienststatus über eine grafische Oberfläche.
Für fortgeschrittene Vorgänge wie das Aktivieren oder Deaktivieren von Diensten beim Systemstart bleibt systemctl jedoch die zuverlässigste Methode.

Q6. Wo sollte ich benutzerdefinierte Unit-Dateien ablegen?

A6.
Benutzerdefinierte Unit-Dateien werden typischerweise in /etc/systemd/system/ abgelegt. Nach dem Bearbeiten oder Hinzufügen einer Unit-Datei sollte stets der folgende Befehl ausgeführt werden:

sudo systemctl daemon-reload

Sie können den Dienst dann wie gewohnt mit start oder enable verwalten.