Systemd Services starten und stoppen
systemdist die neue Art, Dienste unter Linux auszuführen. systemd hat ein verdrängtes sysvinit . systemd bringt schnellere Startzeiten für Linux und ist jetzt eine Standardmethode zum Verwalten von Linux-Diensten. Systemd ist zwar stabil, entwickelt sich aber weiter.
systemd als Init-System wird verwendet, um sowohl Dienste als auch Daemons zu verwalten, die nach dem Booten des Linux-Kernels Statusänderungen benötigen. Durch Statusänderung wird das Starten, Stoppen, Neuladen und Anpassen des Servicestatus angewendet.
Lassen Sie uns zunächst die Version von systemd überprüfen, die derzeit auf unserem Server ausgeführt wird.
[centos@localhost ~]$ systemctl --version
systemd 219
+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP
+GCRYPT +GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN
[centos@localhost ~]$
Ab CentOS Version 7 ist die zum Zeitpunkt des Schreibens dieses Systems vollständig aktualisierte Version 219 die aktuelle stabile Version.
Mit systemd-analyse können wir auch die letzte Serverstartzeit analysieren
[centos@localhost ~]$ systemd-analyze
Startup finished in 1.580s (kernel) + 908ms (initrd) + 53.225s (userspace) = 55.713s
[centos@localhost ~]$
Wenn die Systemstartzeiten langsamer sind, können wir den Befehl systemd-analyse tadeln verwenden .
[centos@localhost ~]$ systemd-analyze blame
40.882s kdump.service
5.775s NetworkManager-wait-online.service
4.701s plymouth-quit-wait.service
3.586s postfix.service
3.121s systemd-udev-settle.service
2.649s tuned.service
1.848s libvirtd.service
1.437s network.service
875ms packagekit.service
855ms gdm.service
514ms firewalld.service
438ms rsyslog.service
436ms udisks2.service
398ms sshd.service
360ms boot.mount
336ms polkit.service
321ms accounts-daemon.service
Bei der Arbeit mit systemd ist es wichtig, das Konzept der Einheiten zu verstehen .UnitsSind die Ressourcen systemd zu interpretieren weiß. Einheiten werden wie folgt in 12 Typen eingeteilt:
- .service
- .socket
- .device
- .mount
- .automount
- .swap
- .target
- .path
- .timer
- .snapshot
- .slice
- .scope
Zum größten Teil werden wir mit .service als Einheitenziel arbeiten. Es wird empfohlen, weitere Untersuchungen zu den anderen Typen durchzuführen. Da nur .service- Einheiten zum Starten und Stoppen von systemd- Diensten gelten.
Jede Einheit ist in einer Datei definiert, die sich entweder in - befindet
/lib/systemd/system - Basiseinheitsdateien
/etc/systemd/system - Geänderte Einheitendateien wurden zur Laufzeit gestartet
Verwalten von Diensten mit systemctl
Um mit systemd arbeiten zu können , müssen wir uns mit dem Befehl systemctl vertraut machen . Im Folgenden sind die häufigsten Befehlszeilenoptionen für systemctl aufgeführt .
Schalter | Aktion |
---|---|
-t | Kommagetrennter Wert von Einheitentypen wie Service oder Socket |
-ein | Zeigt alle geladenen Einheiten an |
--Zustand | Zeigt alle Einheiten in einem definierten Zustand an, entweder: Laden, Unter, Aktiv, Inaktiv usw. |
-H | Führt den Vorgang remote aus. Geben Sie den Hostnamen oder Host und Benutzer an, die durch @ getrennt sind. |
Grundlegende systemctl Verwendung
systemctl [operation]
example: systemctl --state [servicename.service]
Für einen kurzen Überblick über alle Dienste, die auf unserer Box ausgeführt werden.
[root@localhost rdc]# systemctl -t service
UNIT LOAD ACTIVE SUB DESCRIPTION
abrt-ccpp.service loaded active exited Install ABRT coredump hook
abrt-oops.service loaded active running ABRT kernel log watcher
abrt-xorg.service loaded active running ABRT Xorg log watcher
abrtd.service loaded active running ABRT Automated Bug Reporting Tool
accounts-daemon.service loaded active running Accounts Service
alsa-state.service loaded active running Manage Sound Card State (restore and store)
atd.service loaded active running Job spooling tools
auditd.service loaded active running Security Auditing Service
avahi-daemon.service loaded active running Avahi mDNS/DNS-SD Stack
blk-availability.service loaded active exited Availability of block devices
bluetooth.service loaded active running Bluetooth service
chronyd.service loaded active running NTP client/server
Beenden eines Dienstes
Beenden wir zunächst den Bluetooth-Dienst.
[root@localhost]# systemctl stop bluetooth
[root@localhost]# systemctl --all -t service | grep bluetooth
bluetooth.service loaded inactive dead Bluetooth service
[root@localhost]#
Wie wir sehen können, ist der Bluetooth-Dienst jetzt inaktiv.
So starten Sie den Bluetooth-Dienst erneut.
[root@localhost]# systemctl start bluetooth
[root@localhost]# systemctl --all -t service | grep bluetooth
bluetooth.service loaded active running Bluetooth service
[root@localhost]#
Note- Wir haben bluetooth.service nicht angegeben, da der .service impliziert ist. Es ist eine gute Praxis, an den Einheitentyp zu denken, der den Service anhängt, mit dem wir es zu tun haben. Von nun an werden wir die Erweiterung .service verwenden , um zu verdeutlichen, dass wir am Betrieb von Serviceeinheiten arbeiten.
Die primären Aktionen, die für einen Dienst ausgeführt werden können, sind:
Start | Startet den Dienst |
Halt | Stoppt einen Dienst |
Neu laden | Lädt die aktive Konfiguration eines Dienstes neu, ohne ihn zu stoppen (wie kill -HUP in System v init). |
Neu starten | Startet und beendet dann einen Dienst |
Aktivieren | Startet einen Dienst beim Booten |
Deaktivieren | Verhindert, dass ein Dienst automatisch zur Laufzeit gestartet wird |
Die oben genannten Aktionen werden hauptsächlich in den folgenden Szenarien verwendet:
Start | Um einen Dienst aufzurufen, der in den gestoppten Zustand versetzt wurde. |
Halt | So schließen Sie einen Dienst vorübergehend (z. B. wenn ein Dienst gestoppt werden muss, um auf vom Dienst gesperrte Dateien zuzugreifen, wie beim Aktualisieren des Dienstes) |
Neu laden | Wenn eine Konfigurationsdatei bearbeitet wurde und wir die neuen Änderungen übernehmen möchten, ohne den Dienst zu beenden. |
Neu starten | Im selben Szenario wie beim Neuladen, aber der Dienst unterstützt das Neuladen nicht . |
Aktivieren | Wenn ein deaktivierter Dienst beim Booten ausgeführt werden soll. |
Deaktivieren | Wird hauptsächlich verwendet, wenn ein Dienst gestoppt werden muss, er jedoch beim Booten gestartet wird. |
So überprüfen Sie den Status eines Dienstes:
[root@localhost]# systemctl status network.service
network.service - LSB: Bring up/down networking
Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled)
Active: active (exited) since Sat 2017-01-14 04:43:48 EST; 1min 31s ago
Docs: man:systemd-sysv-generator(8)
Process: 923 ExecStart = /etc/rc.d/init.d/network start (code=exited, status = 0/SUCCESS)
localhost.localdomain systemd[1]: Starting LSB: Bring up/down networking...
localhost.localdomain network[923]: Bringing up loopback interface: [ OK ]
localhost.localdomain systemd[1]: Started LSB: Bring up/down networking.
[root@localhost]#
Zeigen Sie uns den aktuellen Status des Netzwerkdienstes . Wenn wir alle mit dem Netzwerk verbundenen Dienste sehen möchten, können wir Folgendes verwenden:
[root@localhost]# systemctl --all -t service | grep -i network
network.service loaded active exited LSB: Bring up/
NetworkManager-wait-online.service loaded active exited Network Manager
NetworkManager.service loaded active running Network Manager
ntpd.service loaded inactive dead Network Time
rhel-import-state.service loaded active exited Import network
[root@localhost]#
Für diejenigen, die mit dem vertraut sind sysinitBei der Verwaltung von Diensten ist es wichtig, den Übergang zu systemd vorzunehmen . systemd ist die neue Methode zum Starten und Stoppen von Daemon-Diensten unter Linux.