Démarrage et arrêt des services Systemd

systemdest la nouvelle façon d'exécuter des services sous Linux. systemd a un sysvinit remplacé . systemd accélère les temps de démarrage de Linux et constitue désormais un moyen standard de gérer les services Linux. Bien que stable, systemd évolue toujours.

systemd en tant que système d'initialisation, est utilisé pour gérer à la fois les services et les démons qui nécessitent des changements d'état après le démarrage du noyau Linux. Par changement d'état, le démarrage, l'arrêt, le rechargement et l'ajustement de l'état du service sont appliqués.

Tout d'abord, vérifions la version de systemd actuellement en cours d'exécution sur notre serveur.

[[email protected] ~]$ systemctl --version 
systemd 219 
+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP 
+GCRYPT +GNUTLS +ACL     +XZ -LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN

[[email protected] ~]$

À partir de la version 7 de CentOS, entièrement mise à jour au moment de la rédaction de cet article, la version 219 de systemd est la version stable actuelle.

Nous pouvons également analyser l'heure du dernier démarrage du serveur avec systemd-analyser

[[email protected] ~]$ systemd-analyze    
Startup finished in 1.580s (kernel) + 908ms (initrd) + 53.225s (userspace) = 55.713s 
[[email protected] ~]$

Lorsque les temps de démarrage du système sont plus lents, nous pouvons utiliser la commande systemd-analyz blame .

[[email protected] ~]$ 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

Lorsque vous travaillez avec systemd , il est important de comprendre le concept d' unités .Unitssont les ressources que systemd sait interpréter. Les unités sont classées en 12 types comme suit -

  • .service
  • .socket
  • .device
  • .mount
  • .automount
  • .swap
  • .target
  • .path
  • .timer
  • .snapshot
  • .slice
  • .scope

Pour la plupart, nous travaillerons avec .service comme cibles unitaires. Il est recommandé de poursuivre les recherches sur les autres types. Comme seules les unités .service s'appliqueront au démarrage et à l'arrêt des services systemd .

Chaque unité est définie dans un fichier situé soit dans -

  • /lib/systemd/system - fichiers d'unité de base

  • /etc/systemd/system - fichiers d'unité modifiés démarrés au moment de l'exécution

Gérer les services avec systemctl

Pour travailler avec systemd , nous devrons nous familiariser avec la commande systemctl . Voici les commutateurs de ligne de commande les plus courants pour systemctl .

Commutateur action
-t Valeur séparée par des virgules des types d'unité tels que service ou socket
-une Affiche toutes les unités chargées
--Etat Affiche toutes les unités dans un état défini, soit: charge, sous, active, inactive, etc.
-H Exécute l'opération à distance. Spécifiez le nom d'hôte ou l'hôte et l'utilisateur séparés par @.

Utilisation de base du systemctl

systemctl [operation]
example: systemctl --state [servicename.service]

Pour un aperçu rapide de tous les services fonctionnant sur notre box.

[[email protected] 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

Arrêt d'un service

Commençons par arrêter le service Bluetooth.

[[email protected]]# systemctl stop bluetooth

[[email protected]]# systemctl --all -t service | grep bluetooth      
bluetooth.service   loaded    inactive dead    Bluetooth service

[[email protected]]#

Comme on peut le voir, le service bluetooth est désormais inactif.

Pour redémarrer le service Bluetooth.

[[email protected]]# systemctl start bluetooth

[[email protected]]# systemctl --all -t service | grep bluetooth 
bluetooth.service  loaded    active   running Bluetooth     service

[[email protected]]#

Note- Nous n'avons pas spécifié bluetooth.service, car le .service est implicite. C'est une bonne pratique de penser au type d'unité qui ajoute le service que nous traitons. Donc, à partir de maintenant , nous utiliserons l' extension .service pour clarifier que nous travaillons sur les opérations des unités de service.

Les principales actions qui peuvent être effectuées sur un service sont:

Début Démarre le service
Arrêtez Arrête un service
Recharger Recharge la configuration active d'un service sans l'arrêter (comme kill -HUP dans system v init)
Redémarrer Démarre, puis arrête un service
Activer Démarre un service au moment du démarrage
Désactiver Empêche un service de démarrer automatiquement au moment de l'exécution

Les actions ci-dessus sont principalement utilisées dans les scénarios suivants -

Début Pour mettre en place un service qui a été mis à l'état arrêté.
Arrêtez Pour arrêter temporairement un service (par exemple lorsqu'un service doit être arrêté pour accéder aux fichiers verrouillés par le service, comme lors de la mise à niveau du service)
Recharger Lorsqu'un fichier de configuration a été modifié et que nous voulons appliquer les nouvelles modifications sans arrêter le service.
Redémarrer Dans le même scénario que le rechargement, mais le service ne prend pas en charge le rechargement .
Activer Lorsque nous voulons qu'un service désactivé s'exécute au moment du démarrage.
Désactiver Utilisé principalement lorsqu'il est nécessaire d'arrêter un service, mais il démarre au démarrage.

Pour vérifier l'état d'un service -

[[email protected]]# 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.

[[email protected]]#

Montrez-nous l'état actuel du service réseau . Si nous voulons voir tous les services liés au réseautage, nous pouvons utiliser -

[[email protected]]# 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      

[[email protected]]#

Pour ceux qui connaissent le sysinitméthode de gestion des services, il est important de faire la transition vers systemd . systemd est la nouvelle façon de démarrer et d'arrêter les services démons sous Linux.