Les services
1. Introduction
Certains processus ne sont associés à aucun terminal et tournent en tâche de fond indépendamment des utilisateurs qui travaillent sur la machine. Ils démarrent au boot, et sont normalement actifs jusqu’au shutdown. Ce sont des services (daemons), ils assurent des fonctionnalités particulières du système.
Les processus associés à ces services ont souvent un nom terminé par d (d pour daemon).
Leur PPID est en général 1 (car lancés par le premier processus, init ou systemd).
|
La gestion de ces services n’est pas uniforme sur tous les Unix.
Sur les Unix System V, ils sont historiquement gérés par des scripts shell situés dans /etc/init.d,
qui permettent de les stopper, les redémarrer, etc.
Mais systemd bouscule cet héritage, en offrant une gestion repensée, d’utilisation complètement différente.
Ce qui suit s’applique aux systèmes utilisant systemd.
|
2. Exemple de services
-
NetworkManager, dont le rôle est de gérer toutes les connexions réseau (Ethernet, WiFi, VPN, etc.) de l’équipement,
-
bluetooth (processus
bluetoothd), qui actionne le bluetooth, -
cups (processus
cupsd), qui gère les impressions, -
systemd-journald, le service de journalisation
-
firewalld, le firewall.
3. Lister les services
Pour lister les services installés :
$ systemctl list-unit-files --type=service
UNIT FILE STATE PRESET
bluetooth.service enabled enabled
cups.service disabled disabled
firewalld.service disabled enabled
NetworkManager.service enabled enabled
systemd-journald.service static -
STATE précise si le service est actuellement activé ou non,
c’est-à-dire s’il démarre automatiquement au boot.
PRESET précise si le service était, à l’installation, activé ou non.
Pour lister les services activés :
$ systemctl list-units --type=service
UNIT LOAD ACTIVE SUB DESCRIPTION
bluetooth.service loaded active running Bluetooth service
cups.service loaded active running CUPS Scheduler
NetworkManager.service loaded active running Network Manager
systemd-journald.service loaded active running Journal Service -
ACTIVE précise si le service tourne actuellement,
s’il est arrêté ou en erreur.
4. Gestion des services
- afficher l’état du service NetworkManager
$ systemctl status NetworkManager
● NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; preset: enabled)
Active: active (running) since Thu 2025-03-20 15:31:20 CET; 1 day 22h ago
Main PID: 1718 (NetworkManager)
Tasks: 4 (limit: 37843)
Memory: 17M (peak: 18.8M)
CPU: 17.251s
- activer le service cups
$ systemctl enable cups
- désactiver le service cups
$ systemctl disable cups
- démarrer le service cups
$ systemctl start cups
- arrêter le service cups
$ systemctl stop cups
Lorque l’on modifie la configuration d’un service
(en modifiant le contenu de l’un de ses fichiers de configuration),
il est généralement nécessaire de redémarrer le service pour que les changements soient pris en compte.
Par exemple, les fichiers de configuration de cups sont dans /etc/cups.
Si l’on modifie l’un de ces fichiers, on doit redémarrer le service pour que cela soit pris en compte :
$ systemctl restart cups
Sinon, le changement n’est effectif qu’au prochain reboot.