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.