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.
[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 ~]$
À 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
[centos@localhost ~]$ systemd-analyze
Startup finished in 1.580s (kernel) + 908ms (initrd) + 53.225s (userspace) = 55.713s
[centos@localhost ~]$
Lorsque les temps de démarrage du système sont plus lents, nous pouvons utiliser la commande systemd-analyz blame .
[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
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.
[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
Arrêt d'un service
Commençons par arrêter le service Bluetooth.
[root@localhost]# systemctl stop bluetooth
[root@localhost]# systemctl --all -t service | grep bluetooth
bluetooth.service loaded inactive dead Bluetooth service
[root@localhost]#
Comme on peut le voir, le service bluetooth est désormais inactif.
Pour redémarrer le service Bluetooth.
[root@localhost]# systemctl start bluetooth
[root@localhost]# systemctl --all -t service | grep bluetooth
bluetooth.service loaded active running Bluetooth service
[root@localhost]#
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 -
[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]#
Montrez-nous l'état actuel du service réseau . Si nous voulons voir tous les services liés au réseautage, nous pouvons utiliser -
[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]#
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.