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 demstart
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?