dernière modification : 2025

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.