Das Verwalten eines Dienstes oder einer Gruppe von Diensten auf einem modernen Linux-PC kann eine Belastung sein, wenn Sie sich nicht sicher sind, was Sie tun. Glücklicherweise bietet Ihnen Ubuntu Systemctl die Möglichkeit, 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 ausführen Befehle.
Bereit? Zeit zum Reinschnuppern!
Voraussetzungen
Dieses Tutorial wird eine praktische Demonstration sein, erfordert aber keine speziellen Tools, solange Sie Ubuntu 16 oder eine höhere Version verwenden, können Sie loslegen. Dieses Tutorial verwendet Ubuntu 20.04.3 LTS-Version für die Demos.
Was ist Ubuntu Systemctl?
Bevor Sie Ubuntu-Systemctl-Befehle ausführen, sollten Sie zuerst wissen, was Systemctl ist. Systemctl ist ein Befehlszeilendienstprogramm zum Steuern und Verwalten von systemd und Systemdiensten.
Kurz gesagt, Systemctl ist ein Control Panel oder Service Manager für das Systemd-Init-System, um Komponenten zu initialisieren, nachdem der Linux-Kernel gestartet wurde. Systemctl ist eine Sammlung von Bibliotheken, Daemons und Dienstprogrammen, mit denen Sie Dienste verwalten können.
Um Dienste effektiv zu verwalten, sollten Sie die verschiedenen Dienststatus wie folgt kennen:
- Aktiviert – gibt 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 ausgeführt wird.
- Inaktiv – gibt an, dass ein Dienst derzeit nicht ausgeführt wird, aber gestartet werden kann, wenn eine Anwendung versucht, diesen Dienst zu starten.
Alle Dienste auflisten
Jetzt, da Sie die verschiedenen Zustände von Diensten kennen, möchten Sie vielleicht eine Liste aller Dienste auf Ihrem Ubuntu-PC sehen. Das Auflisten aller Dienste bietet eine Handvoll Informationen, die Sie auf die Verwaltung von Diensten vorbereiten.
Öffnen Sie Ihr Terminal und führen Sie den folgenden Befehl aus, um alle Serviceeinheiten aufzulisten (list-units ) (aktiv, ausgeführt, beendet oder fehlgeschlagen) mit dem Dienstsatz als Einheitentyp (--type=service). ).
systemctl list-units --type=service Wählen Sie einen der Dienste aus der Liste aus, die Sie später in dieser Anleitung verwalten möchten, und notieren Sie sich die EINHEIT Name (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 eine gute Anleitung zum Linux Shell Scripting.
Dienste mit spezifischem Status auflisten
Anstatt alle Dienste aufzulisten, möchten Sie vielleicht die Liste der Dienste eingrenzen. Wenn ja, fügen Sie die --state hinzu Der Parameter wird den Zweck erfüllen, da er die Dienste mit dem von Ihnen angegebenen spezifischen Status herausfiltert.
Führen Sie einen der folgenden Befehle aus, um alle aktiven Dienste aufzulisten (--type=service --state=active ), sowohl ausgeführt als auch beendet.
systemctl list-units --type=service --state=active
Um nur beendete oder laufende Dienste aufzulisten, ändern Sie auf ähnliche Weise den Statuswert von active an entweder running oder exited , wie in den folgenden Befehlen gezeigt:
systemctl --type=service --state=running
systemctl --type=service --state=exited
Aktivierte Dienste auflisten
Neben der Auflistung aktiver, laufender und beendeter Dienste können Sie auch aktivierte und deaktivierte Dienste auflisten, indem Sie den grep weiterleiten Befehl.
Führen Sie einen der folgenden Befehle aus, um (list-unit-files ) disabled oder enabled Dienste (--type=service ).
## Lists all Enabled services
systemctl list-unit-files --type=service | grep enabled
## Lists all Disabled services
systemctl list-unit-files --type=service | grep disabled 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 demo. Das acpid ist ein erweiterbarer Daemon, der die Advanced Configuration and Power Interface (ACPI)-Ereignisse unterstützt.
Diensteigenschaften auflisten
Abgesehen von der Auflistung von Diensten möchten Sie möglicherweise die Eigenschaften eines Dienstes überprüfen. Ein Einblick in die Diensteigenschaften ist praktisch für die Fehlerbehebung, Parameter für den Prozess oder das Neustartverhalten.
Führen Sie den folgenden Befehl zu show aus eines Dienstes (acpid.service )-Eigenschaften in einem Schlüssel=Wert-Format.
systemctl show acpid.service
Wenn Sie jetzt nur nach einer bestimmten Dienstleistungseigenschaft suchen, können Sie den -p übergeben Flag mit dem Eigenschaftsnamen.
Führen Sie den folgenden Befehl zu show aus eines Dienstes (acpid.service ) MainPID Eigentum.
systemctl show acpid.service -p MainPID
Verwalten eines bestimmten Dienstes
Da die Grundlagen der Auflistung von Diensten aus dem Weg geräumt sind, ist es an der Zeit, einen bestimmten (einzelnen) Dienst zu verwalten, indem Sie systemctl stop ausführen und start Befehle.
Der Apache-Dienst (Apache2) wird für die folgenden Demos verwendet, aber Sie können den Dienst, den Sie im Abschnitt „Auflisten aller Dienste“ angegeben haben, frei verwalten. Aber bevor Sie einen Dienst stoppen oder starten, müssen Sie zuerst den Status des Dienstes überprüfen.
Führen Sie den folgenden Befehl auf einem Terminal aus, um apache2 anzuzeigen detaillierte Informationen des Dienstes wie status .
systemctl status apache2 Unten sehen Sie, dass der Apache2-Dienst aktiv ist und ausgeführt wird.

Die Eingabe des sudo-Passworts ist nicht erforderlich, um den Dienststatus anzuzeigen, da Sie den Dienststatus nicht ändern. Aber wenn Sie einen Dienst starten, stoppen oder neu starten, müssen Sie den sudo-Befehl voranstellen und das sudo-Passwort eingeben.
Stoppen eines Dienstes
Vielleicht möchten Sie einen Dienst stoppen, der hängen geblieben ist und noch im Hintergrund ausgeführt wird. In diesem Fall der systemctl stop Befehl ist, was Sie brauchen. Führen Sie systemctl aus Befehl unten, um apache2 zu stoppen Dienst.
sudo systemctl stop apache2 Wenn Sie es vorziehen, mehrere Dienste gleichzeitig zu stoppen, geben Sie jeden Dienst durch Leerzeichen getrennt an, wie hier:
sudo systemctl stop sshd apache2. Mit diesem Befehl stoppen Sie sowohl sshd- als auch Apache2-Dienste auf einmal.
Führen Sie nun systemctl status aus Befehl, wie Sie es zuvor getan haben, um zu überprüfen, ob der Apache2-Dienst gestoppt wurde.
systemctl status apache2 Unten sehen Sie, dass sich der Status des Apache2-Dienstes auf inaktiv (dead) geändert hat , was darauf hinweist, dass der Dienst beendet wurde.
Starten eines Dienstes
Wie starten Sie nun einen Dienst, wenn Sie bemerkt haben, dass er überhaupt nicht läuft? Sie führen einen ähnlichen Befehl wie das Stoppen des Dienstes aus, nämlich systemctl start Befehl. Führen Sie den folgenden Befehl zu start aus der apache2 Dienst.
sudo systemctl start apache2 Wie beim Beenden mehrerer Dienste können Sie auch mehrere Dienste in einer einzigen Befehlszeile starten. Ersetzen Sie den
stopBefehl mit demstartBefehl wie folgt:sudo systemctl start sshd apache2
Führen Sie nun systemctl status aus Befehl noch einmal, um zu überprüfen, ob der apache2 Dienst läuft.
systemctl status apache2 Wenn Sie aktiv (laufend) sehen Status, wie unten gezeigt, dann sind Sie bereit, da der Dienst wieder im Geschäft ist.

Wenn Sie es vorziehen, den Dienst sofort neu zu starten, ohne ihn vorher stoppen zu müssen. Dann wählen Sie
systemctl restartBefehl stattdessen wie folgt:sudo systemctl restart apache2
Aktivieren oder Deaktivieren eines Dienstes
Vielleicht gibt es einen bestimmten Dienst, den Sie lieber starten oder verhindern möchten, dass er beim Systemstart gestartet wird. Wenn ja, führen Sie systemctl aus enable oder disable Befehl ist der beste Ansatz.
Der enable Mit dem Unterbefehl können Sie die standardmäßigen Starteinstellungen auf Ihrem System konfigurieren, während der disable Unterbefehl verhindert, dass ein Dienst beim Systemstart ausgeführt wird.
Führen Sie systemctl aus Befehl unten an disable der Dienst (acpid.service ), die Sie im Abschnitt „Auflisten aktivierter Dienste“ angegeben haben. Geben Sie Ihr sudo-Passwort ein, um die Ausführung des Befehls zu autorisieren.
sudo systemctl disable acpid.service
Jetzt, da acpid.service OS-gesteuerte Konfiguration und Power Management (OSPM) unterstützt; Sie müssen es erneut aktivieren. Der Befehl zum Aktivieren des Dienstes ähnelt dem Deaktivieren eines Dienstes.
Führen Sie systemctl aus Befehl unten an enable acpid.service . Dieser Befehl registriert den Dienst wieder auf die Standard-Starteinstellungen auf Ihrem System.
sudo systemctl enable acpid.service
Schlussfolgerung
In diesem Tutorial haben Sie festgestellt, wie schnell Sie Dienste stoppen, starten oder neu starten können, indem Sie Ubuntu systemctl ausführen Befehle. Sie haben auch erfahren, dass der systemctl Mit dem Befehl können Sie nicht nur einen, sondern mehrere Dienste gleichzeitig verwalten.
Warum automatisieren Sie mit diesem neu gewonnenen Wissen nicht die Kontrolldienste in Ihrem Ubuntu-System?