Wie verwalte ich Systemd Services mit Systemctl?
Der Standardsystem- und Service-Manager für die meisten Linux-Distributionen ist jetzt systemd
.
Der systemd
process ersetzt die SysV init
. Es läuft als erstes process nach dem Kernel-Boot und ist dafür verantwortlich, den Linux-Host auf den state wo es verwendet werden kann. Es ist für das Starten und Verwalten der Dienste, das Mounten von Dateisystemen, das Verwalten der Hardware, das Generieren der Anmeldeaufforderung und vieles mehr verantwortlich.
Ein wesentlicher Vorteil gegenüber SysV besteht darin, dass systemd so viele Dienste wie möglich parallel startet und so die Geschwindigkeit beschleunigt Anfang process, und das bringt den Anmeldebildschirm schneller.
Einheit
Die vom systemd verwalteten Elemente werden als Einheiten bezeichnet. Die Unit-Dateien sind located ein /lib/systemd/
System funktionieren.
Serviceeinheiten
Für das Service-Management sind die Zieleinheiten Service-Einheiten, die Einheitendateien 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 Suffix .service verlassen. So starten Sie beispielsweise den Apache-Server unter Ubuntu:
$ sudo systemctl start 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 restart name.service
Und wo die einzige Konfigurationsdatei zum erneuten Laden erforderlich ist
$ sudo systemctl reload name.service
Dienste aktivieren und deaktivieren
Wenn Sie möchten, dass ein Dienst automatisch startetally Verwenden Sie beim Systemstart den Befehl „enable“:
$ sudo systemctl enable name.service
Zu disable ein Dienst, der beim Systemstart startet:
$ sudo systemctl disable 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
is
apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Tue 2020-05-19 22:11:36 UTC; 4 days ago
Process: 116002 ExecReload=/usr/sbin/apachectl graceful (code=exited, status=0/SUCCESS)
Main PID: 104165 (apache2)
Tasks: 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
May 19 22:11:36 ubuntu18 systemd[1]: Starting The Apache HTTP Server...
May 19 22:11:36 ubuntu18 systemd[1]: Started The Apache HTTP Server.
May 21 06:25:01 ubuntu18 systemd[1]: Reloading The Apache HTTP Server.
May 21 06:25:01 ubuntu18 systemd[1]: Reloaded The Apache HTTP Server.
May 22 06:25:01 ubuntu18 systemd[1]: Reloading The Apache HTTP Server.
So überprüfen Sie, ob ein Dienst aktiv ist:
$ sudo systemctl is-active name.service
Während der Dienst apache2 ausgeführt wird, lautet die Ausgabe des Befehls systemctl is-active:
$ sudo systemctl is-active apache2
active
So überprüfen Sie, ob ein Dienst aktiviert ist:
$ sudo systemctl is-enabled name.service.
Sichtsystem State
Alle Befehle, die Sie bisher gesehen haben, dienen der Verwaltung eines einzelnen Dienstes. Wenn Sie einen Überblick über das System st wünschenate, verwenden Sie den folgenden Befehlssatz:
Alle Einheitentypen anzeigen
$ sudo systemctl -t help
Available unit types:
service
socket
target
device
mount
automount
swap
timer
path
slice
scope
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 generated
boot-efi.mount generated
dev-hugepages.mount static
dev-mqueue.mount static
mnt.mount generated
proc-sys-fs-binfmt_misc.mount static
sys-fs-fuse-connections.mount static
sys-kernel-config.mount static
sys-kernel-debug.mount static
acpid.path enabled
apport-autoreport.path enabled
systemd-ask-password-console.path static
systemd-ask-password-plymouth.path static
systemd-ask-password-wall.path static
session-161.scope transient
accounts-daemon.service enabled
Die Ausgabe hat nur zwei Spalten Unit File und State. Die state wird usually aktiviert sein, disabled, statisch oder maskiert.
- Statisch: Dies bedeutet, dass die Einheit nicht aktiviert werden kann, eine einmalige Aktion ausführt oder von einer anderen Einheit abhängig ist und von dieser nicht ausgeführt werden kannself.
- 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. Dieses SrevVerhindert, dass der Dienst gestartet wird, manually oder automatischally.
Listen Sie alle installierten Dienste auf
Der Befehl „systemctl list-unit-files“ mit dem Servicefilter „-t“ oder „–type“ zeigt den state nur der installierten Dienste.
$ sudo systemctl list-unit-files -t service
UNIT FILE STATE
accounts-daemon.service enabled
acpid.service disabled
apache-htcacheclean.service disabled
apache-htcacheclean@.service disabled
apache2.service enabled
apache2@.service disabled
apparmor.service enabled
apport-autoreport.service static
apport-forward@.service static
apport.service generated
apt-daily-upgrade.service static
apt-daily.service static
atd.service enabled
autovt@.service enabled
blk-availability.service enabled
bootlogd.service masked
bootlogs.service masked
Verwenden Sie Listeneinheiten mit dem Servicefilter -t, um alle aktiven Serviceeinheiten anzuzeigen
$ sudo systemctl list-units -t service
UNIT LOAD ACTIVE SUB DESCRIPTION
accounts-daemon.service loaded active running Accounts Service
apache2.service loaded active running The Apache HTTP Server
apparmor.service loaded active exited AppArmor initialization
apport.service loaded active exited LSB: automatic crash report generation
atd.service loaded active running Deferred execution scheduler
blk-availability.service loaded active exited Availability of block devices
cloud-config.service loaded active exited Apply the settings specified in cloud-con
cloud-final.service loaded active exited Execute cloud user/final scripts
cloud-init-local.service loaded active exited Initial cloud-init job (pre-networking)
cloud-init.service loaded active exited Initial cloud-init job (metadata service
console-setup.service loaded active exited Set console font and keymap
cron.service loaded active running Regular background program processing 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
- ACTIVE: Beschreibt, ob das Gerät aktiv ist.
- SUB: Low-Level-Aktivierung state des Geräts und liefert detailliertere Informationen über das Gerät. Dies variiert je nach Gerätetyp.
- BESCHREIBUNG: Die Serviceeinheit descriptIon.
Schlussfolgerung
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.