GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Korrekte Verwendung von Ubuntu systemctl zur Steuerung von Systemd

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 stop Befehl mit dem start Befehl 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 restart Befehl 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?


Linux
  1. So verwenden Sie den Systemctl-Befehl zum Verwalten von Systemd-Diensten

  2. So listen Sie Systemd-Dienste unter Linux auf

  3. Verwenden Sie Systemctl, um Dienste zu verwalten

  4. Systemd:Sowohl After als auch Requires verwenden

  5. Richtige Methode zur Verwendung von OnFailure in systemd

So aktivieren oder deaktivieren Sie Dienste in Ubuntu Systemd/Upstart

Listendienste auf Ubuntu 20.04

Verwenden von systemd-Funktionen zum Sichern von Diensten

So starten Sie Dienste in der Ubuntu-Befehlszeile neu

So richten Sie die automatische Ausführung eines Python-Skripts mit Systemd ein

Ubuntu – Dienste starten, stoppen, neu starten