Die Verwaltung eines Dienstes oder einer Gruppe von Diensten auf einem modernen Linux-PC kann mühsam sein, wenn Sie nicht sicher sind, was Sie tun. Glücklicherweise hat Ubuntu Systemctl alles im Griff, um Dienste auf einem Linux-PC zu verwalten.
In diesem Tutorial erfahren Sie, wie Sie Systemd-Dienste auf einem Ubuntu-PC verwalten, indem Sie verschiedene systemctl
-Befehle ausführen.
Bereit? Zeit zum Eintauchen!
Voraussetzungen
Dieses Tutorial wird eine praktische Demonstration sein, erfordert jedoch keine speziellen Tools. Solange Sie Ubuntu 16 oder eine höhere Version verwenden, sind Sie startklar. In diesem Tutorial wird die Ubuntu 20.04.3 LTS-Version für die Demonstrationen verwendet.
Was ist Ubuntu Systemctl?
Bevor Sie Ubuntu-Systemctl-Befehle ausführen, erfahren Sie zunächst, was Systemctl ist. Systemctl ist ein Befehlszeugendienst zur Steuerung und Verwaltung von systemd– und Systemdiensten.
Kurz gesagt ist Systemctl ein Steuerfeld oder ein Dienstmanager für das systemd-init-System, um Komponenten nach dem Booten des Linux-Kernels zu initialisieren. Systemctl ist eine Sammlung von Bibliotheken, Daemons und Dienstprogrammen, die Sie verwenden können, um Dienste zu verwalten.
Um Dienste effektiv zu verwalten, kennen Sie die verschiedenen Dienstzustände wie folgt:
- Aktiviert – zeigt an, dass ein Dienst so konfiguriert ist, dass er beim Systemstart gestartet wird.
- Deaktiviert – zeigt an, dass ein Dienst so konfiguriert ist, dass er beim Systemstart nicht gestartet wird.
- Aktiv – zeigt an, dass ein Dienst derzeit im Laufzustand ist.
- Inaktiv – zeigt an, dass ein Dienst derzeit nicht läuft, aber möglicherweise gestartet wird, wenn eine Anwendung versucht, diesen Dienst zu starten.
Auflisten aller Dienste
Jetzt, da Sie die verschiedenen Zustände der Dienste kennen, möchten Sie vielleicht eine Liste aller Dienste auf Ihrem Ubuntu-PC sehen. Das Auflisten aller Dienste liefert eine Handvoll Informationen, die Sie auf die Verwaltung von Diensten vorbereiten.
Öffnen Sie Ihr Terminal und führen Sie den unten stehenden Befehl aus, um alle Dienst-Einheiten (list-units
) (aktiv, laufend, beendet oder fehlgeschlagen) mit dem Dienst als Einheitstyp (--type=service
) aufzulisten.
Wählen Sie einen der Dienste aus der Liste aus, den Sie später in diesem Tutorial verwalten möchten, und notieren Sie sich den UNIT-Namen (z. B. apache2). Drücken Sie die Leertaste, um nach unten zu scrollen, oder drücken Sie die Taste „Q“, um den Befehl zu beenden.
Übrigens, hier ist ein guter Leitfaden für Linux-Shell-Skripting.

Auflistung von Diensten mit spezifischem Zustand
Anstatt alle Dienste aufzulisten, möchten Sie vielleicht die Liste der Dienste eingrenzen. Wenn ja, fügen Sie den --state
-Parameter hinzu, da er die Dienste mit dem von Ihnen angegebenen spezifischen Zustand filtert.
Führen Sie eine der folgenden Befehle aus, um alle aktiven Dienste aufzulisten (--type=service --state=active
), sowohl laufende als auch beendete.

Ebenso, um nur beendete oder laufende Dienste aufzulisten, ändern Sie den Zustandswert von active
entweder in running
oder exited
, wie in den folgenden Befehlen gezeigt:


Auflisten von aktivierten Diensten
Neben der Auflistung von aktiven, laufenden und beendeten Diensten können Sie auch aktiviert und deaktiviert Dienste auflisten, indem Sie den grep
-Befehl pipen.
Führen Sie einen der folgenden Befehle aus, um (list-unit-files
) deaktivierte
oder aktivierte
Dienste (--type=service
) aufzulisten.
Beachten Sie einen aktivierten Dienst wie unten gezeigt, da Sie ihn später zum Deaktivieren eines Dienstes benötigen, aber dieses Tutorial verwendet den acpid.service für die Demonstration. Acpid ist ein erweiterbarer Daemon, der Ereignisse des Advanced Configuration and Power Interface (ACPI) unterstützt.

Auflistung der Diensteigenschaften
Neben der Auflistung von Diensten möchten Sie möglicherweise die Eigenschaften eines Dienstes überprüfen. Einblick in die Diensteigenschaften ist nützlich für Fehlerbehebung, Parameter für den Prozess oder Neustartverhalten.
Führen Sie den folgenden Befehl aus, um die Eigenschaften eines Dienstes (acpid.service
) im Format Schlüssel=Wert anzuzeigen.

Wenn Sie nur nach einer bestimmten Diensteigenschaft suchen, können Sie das Flag -p
mit dem Eigenschaftsnamen übergeben.
Führen Sie den folgenden Befehl aus, um die Eigenschaft MainPID
eines Dienstes (acpid.service
) anzuzeigen.

Verwalten eines bestimmten Dienstes
Da die Grundlagen für das Auflisten von Diensten erledigt sind, ist es Zeit, einen bestimmten (einzelnen) Dienst zu verwalten, indem Sie die Befehle systemctl stop
und start
ausführen.
Der Apache-Dienst (apache2) wird für die folgenden Demos verwendet, aber Sie können den Dienst, den Sie im Abschnitt „Alle Dienste auflisten“ vermerkt haben, frei verwalten. Bevor Sie jedoch einen Dienst stoppen oder starten, müssen Sie zuerst den Status des Dienstes überprüfen.
Führen Sie den folgenden Befehl in einem Terminal aus, um detaillierte Informationen zum apache2
-Dienst wie seinen Status
anzuzeigen.
Unten sehen Sie, dass der apache2-Dienst aktiv und gestartet ist.

Das Eingeben des sudo-Passworts ist nicht erforderlich, um den Dienststatus anzuzeigen, da Sie den Zustand des Dienstes nicht ändern. Wenn Sie jedoch einen Dienst starten, stoppen oder neu starten, müssen Sie den sudo-Befehl voranstellen und das sudo-Passwort eingeben.
Einen Dienst stoppen
Vielleicht möchten Sie einen Dienst stoppen, der hängen geblieben ist und immer noch im Hintergrund läuft. In diesem Fall ist der Befehl systemctl stop
das Richtige. Führen Sie den Befehl systemctl
unten aus, um den apache2
-Dienst zu stoppen.
Wenn Sie mehrere Dienste gleichzeitig stoppen möchten, geben Sie jeden Dienst durch Leerzeichen getrennt an, so wie hier:
sudo systemctl stop sshd apache2
. Mit diesem Befehl stoppen Sie sowohl die sshd- als auch die apache2-Dienste auf einmal.
Führen Sie nun den Befehl systemctl status
aus, wie Sie es zuvor getan haben, um zu überprüfen, ob der apache2-Dienst gestoppt wurde.
Unten sehen Sie, dass sich der Status des apache2-Dienstes auf inaktiv (tot) geändert hat, was darauf hinweist, dass der Dienst gestoppt wurde.

Dienst starten
Jetzt, wie starten Sie einen Dienst, wenn Sie feststellen, dass er überhaupt nicht läuft? Sie führen einen Befehl aus, der dem Stoppen des Dienstes ähnelt, nämlich den Befehl systemctl start
. Führen Sie den unten stehenden Befehl aus, um den apache2
-Dienst zu starten
.
Wie beim Stoppen mehrerer Dienste können Sie auch mehrere Dienste in einer einzigen Befehlszeile starten. Ersetzen Sie den
stop
-Befehl durch denstart
-Befehl, wie hier gezeigt:sudo systemctl start sshd apache2
Führen Sie nun den Befehl systemctl status
erneut aus, um zu überprüfen, ob der apache2
-Dienst läuft.
Wenn Sie den Status aktiv (läuft) sehen, wie unten gezeigt, dann sind Sie fertig, da der Dienst wieder aktiv ist.

Wenn Sie es bevorzugen, den Dienst sofort neu zu starten, ohne ihn zuerst anzuhalten. Wenn ja, verwenden Sie den Befehl
systemctl restart
, wie hier gezeigt:sudo systemctl restart apache2
Aktivieren oder Deaktivieren eines Dienstes
Vielleicht gibt es einen bestimmten Dienst, den Sie entweder starten oder daran hindern möchten, beim Systemstart zu starten. Wenn ja, ist die Ausführung des Befehls systemctl enable
oder disable
der beste Ansatz.
Der Befehl enable
ermöglicht es Ihnen, die Standardstarteinstellungen auf Ihrem System zu konfigurieren, während der Befehl disable
einen Dienst am Starten beim Systemstart hindert.
Führen Sie den Befehl systemctl
unten aus, um den Dienst (acpid.service
), den Sie im Abschnitt „Aktivierte Dienste auflisten“ notiert haben, zu deaktivieren
. Geben Sie Ihr sudo-Passwort ein, um die Ausführung des Befehls zu autorisieren.

Da der acpid.service die Betriebssystem-gesteuerte Konfiguration und Energieverwaltung (OSPM) unterstützt, müssen Sie ihn wieder aktivieren. Der Befehl zum Aktivieren des Dienstes ähnelt dem Deaktivieren eines Dienstes.
Führen Sie den Befehl systemctl
unten aus, um acpid.service
zu aktivieren
. Dieser Befehl registriert den Dienst wieder mit den Standardstarteinstellungen auf Ihrem System.

Abschluss
In diesem Tutorial haben Sie gelernt, wie schnell Sie Dienste durch Ausführen von Ubuntu-systemctl
-Befehlen stoppen, starten oder neu starten können. Sie haben auch gelernt, dass der systemctl
-Befehl es Ihnen ermöglicht, nicht nur einen, sondern mehrere Dienste gleichzeitig zu verwalten.
Mit diesem neu erlangten Wissen, warum nicht die Steuerung von Diensten in Ihrem Ubuntu-System automatisieren?