Wie verwalte ich Systemd Services mit Systemctl?

Der Standardsystem- und Service-Manager für die meisten Linux-Distributionen ist jetzt systemd.


Der systemd-Prozess ersetzt den SysV-Init. Es wird als erster Prozess nach dem Kernel-Boot ausgeführt und ist dafür verantwortlich, den Linux-Host in den Zustand zu versetzen, in dem er verwendet werden kann. Es ist verantwortlich für das Starten und Verwalten der Dienste, das Mounten von Dateisystemen, das Verwalten von Hardware, das Generieren der Anmeldeaufforderung und vieles mehr.

Ein wesentlicher Vorteil gegenüber SysV besteht darin, dass systemd so viele Dienste wie möglich parallel startet, wodurch der Startvorgang beschleunigt wird und der Anmeldebildschirm schneller angezeigt wird.

Einheiten

Die vom System verwalteten Elemente werden als Einheiten bezeichnet. Die Gerätedateien befinden sich in / lib / systemd / system.

Serviceeinheiten

Für das Service-Management sind die Zieleinheiten Service-Einheiten, die Unit-Dateien mit dem Suffix von haben .Bedienung.

Verwalten von systemd-Diensten

Der Befehl zum Verwalten von systemd-Einheiten lautet systemctl.

Starten und Stoppen von Diensten

Verwenden Sie den Befehl systemctl start, um einen systemd-Dienst zu starten:

$ sudo systemctl start name.service

Sie können das Service-Suffix verlassen. So starten Sie beispielsweise den Apache-Server unter Ubuntu:

$ sudo systemctl starte apache2

So stoppen Sie einen laufenden Dienst:

$ sudo systemctl stop name.service

So stoppen Sie den Apache-Server unter Ubuntu:

$ sudo systemctl stop apache2

Dienste neu starten und neu laden

Verwenden Sie den Befehl restart, um einen laufenden Dienst neu zu starten:

$ sudo systemctl Neustart name.service

Und wo die einzige Konfigurationsdatei zum erneuten Laden erforderlich ist

$ sudo systemctl reload name.service

Dienste aktivieren und deaktivieren

Wenn ein Dienst beim Systemstart automatisch gestartet werden soll, verwenden Sie den Befehl enable:

$ sudo systemctl enable name.service

So deaktivieren Sie den Start eines Dienstes beim Systemstart:

$ sudo systemctl deaktiviere name.service

Durch Deaktivieren wird ein laufender Dienst nicht gestoppt.

Servicestatus anzeigen

So zeigen Sie Informationen zu einem Dienst an:

$ sudo systemctl status name.service

Dies zeigt Ihnen den Status des Dienstes und die ersten Zeilen der Protokolldatei. Während der Dienst ausgeführt wird, ist die Ausgabe von

sudo systemctl status apache2

ist

apache2.service – Der Apache HTTP Server
Geladen: geladen (/lib/systemd/system/apache2.service; aktiviert; Hersteller-Voreinstellung: aktiviert)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Aktiv: aktiv (läuft) seit Di 2020-05-19 22:11:36 UTC; vor 4 Tagen
Prozess: 116002 ExecReload = / usr / sbin / apachectl anmutig (Code = beendet, Status = 0 / ERFOLG)
Haupt-PID: 104165 (Apache2)
Aufgaben: 55 (Limit: 1024)
CGroup: /system.slice/apache2.service
├─104165 / usr / sbin / apache2 -k start
├─116006 / usr / sbin / apache2 -k start
└─116007 / usr / sbin / apache2 -k start

19. Mai 22:11:36 ubuntu18 systemd [1]: Starten des Apache HTTP-Servers…
19. Mai 22:11:36 ubuntu18 systemd [1]: Der Apache HTTP Server wurde gestartet.
21. Mai 06:25:01 ubuntu18 systemd [1]: Neuladen des Apache HTTP-Servers.
21. Mai 06:25:01 ubuntu18 systemd [1]: Der Apache HTTP Server wurde neu geladen.
22. Mai 06:25:01 ubuntu18 systemd [1]: Neuladen des Apache HTTP-Servers.

So überprüfen Sie, ob ein Dienst aktiv ist:

$ sudo systemctl ist aktiv name.service

Während der Dienst apache2 ausgeführt wird, lautet die Ausgabe des Befehls systemctl is-active:

$ sudo systemctl ist-aktiv apache2
aktiv

So überprüfen Sie, ob ein Dienst aktiviert ist:

$ sudo systemctl ist aktiviert name.service.

Systemstatus anzeigen

Alle Befehle, die Sie bisher gesehen haben, werden zum Verwalten eines einzelnen Dienstes verwendet. Wenn Sie einen Überblick über den Systemstatus erhalten möchten, verwenden Sie die folgenden Befehle:

Alle Einheitentypen anzeigen

$ sudo systemctl -t Hilfe
Verfügbare Einheitentypen:
Bedienung
Steckdose
Ziel
Gerät
montieren
automount
Tauschen
Timer
Pfad
Scheibe
Umfang

Verwenden Sie List-Unit-Dateien, um alle installierten Einheiten aufzulisten

$ sudo systemctl list-unit-files
UNIT FILE STATE
proc-sys-fs-binfmt_misc.automount static
-.Mount generiert
boot-efi.mount generiert
dev-vastpages.mount statisch
dev-mqueue.mount static
mnt.mount generiert
proc-sys-fs-binfmt_misc.mount statisch
sys-fs-fuse-connection.mount statisch
sys-kernel-config.mount static
sys-kernel-debug.mount static
acpid.path aktiviert
apport-autoreport.path aktiviert
systemd-ask-password-console.path statisch
systemd-ask-password-plymouth.path statisch
systemd-ask-password-wall.path statisch
session-161.scope transient
Accounts-Daemon.service aktiviert

Die Ausgabe hat nur zwei Spalten Unit File und State. Der Status wird normalerweise aktiviert, deaktiviert, statisch oder maskiert.

  • Statisch: Dies bedeutet, dass die Einheit nicht aktiviert werden kann, eine einmalige Aktion ausführt oder eine Abhängigkeit von einer anderen Einheit ist und nicht alleine ausgeführt werden kann.
  • Maskiert: Eine als maskiert aufgeführte Einheit bedeutet, dass sie vollständig nicht gestartet werden kann, da sie mit / dev / null verknüpft ist. Dies wird als Maskieren der Einheit bezeichnet. Dies verhindert, dass der Dienst manuell oder automatisch gestartet wird.

Listen Sie alle installierten Dienste auf

Der Befehl systemctl list-unit-files mit dem Dienstfilter -t oder –type zeigt nur den Status der installierten Dienste an.

$ sudo systemctl list-unit-files -t service

UNIT FILE STATE
Accounts-Daemon.service aktiviert
acpid.service deaktiviert
apache-htcacheclean.service deaktiviert
[E-Mail geschützt] behindert
apache2.service aktiviert
[E-Mail geschützt] behindert
apparmor.service aktiviert
apport-autoreport.service statisch
[E-Mail geschützt] statisch
apport.service generiert
apt-daily-upgrade.service statisch
apt-daily.service statisch
atd.service aktiviert
[E-Mail geschützt] aktiviert
blk-Availability.service aktiviert
bootlogd.service maskiert
bootlogs.service maskiert

Verwenden Sie Listeneinheiten mit dem Servicefilter -t, um alle aktiven Serviceeinheiten anzuzeigen

$ sudo systemctl Listeneinheiten -t Dienst

UNIT LOAD ACTIVE SUB BESCHREIBUNG
Accounts-Daemon.service lud aktiv laufenden Accounts Service
apache2.service geladen aktiv ausgeführt Der Apache HTTP Server
apparmor.service geladen aktiv beendet AppArmor-Initialisierung
apport.service geladen aktiv beendet LSB: automatische Erstellung von Absturzberichten
atd.service geladen aktiv laufend Planer für verzögerte Ausführung
blk-Availability.service geladen aktiv beendet Verfügbarkeit von Blockgeräten
cloud-config.service geladen aktiv beendet Übernehmen Sie die in cloud-con angegebenen Einstellungen
cloud-final.service geladen aktiv beendet Cloud-Benutzer- / Endskripte ausführen
cloud-init-local.service geladen aktiv beendet Initialer Cloud-Init-Job (Pre-Networking)
cloud-init.service geladen aktiv beendet Initialer Cloud-Init-Job (Metadatendienst
console-setup.service geladen aktiv beendet Legen Sie die Konsolenschriftart und die Keymap fest
cron.service geladen aktiv laufend Regelmäßige Hintergrundprogrammverarbeitung dae

Die Ausgabe enthält die folgenden Spalten:

  • EINHEIT: Der Name der systemd-Serviceeinheit
  • BELASTUNG: Zeigt an, ob die Einheitendefinition richtig gelesen und geladen wurde
  • AKTIV: Beschreibt, ob das Gerät aktiv ist.
  • SUB: Aktivierungsstatus des Geräts auf niedriger Ebene mit detaillierteren Informationen zum Gerät. Dies hängt vom Gerätetyp ab.
  • BESCHREIBUNG: Die Beschreibung der Serviceeinheit.

Fazit

Ich hoffe, dies gibt Ihnen eine Vorstellung davon, wie Sie mit systemctl Dienste unter Linux verwalten können. Wenn Sie mehr erfahren möchten, können Sie dies überprüfen Linux Mastery Kurs.

STICHWORTE:

  • Linux

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map