8 - Les services

Les services

Les services permettent de répondre à des requêtes du système face aux demandes des usagers. Un service est un programme qui s’exécute en arrière-plan, sans interaction directe avec l’utilisateur afin de gérer des tâches système ou applicatives (Web, BD, réseau, etc). Ils sont habituellement lancés au démarrage et sont gérés par une application comme systemctl et fonctionnent continuellement (jusqu’à ce qu’on les arrête).

Les principales caractéristiques des services sont:

  • Ils fonctionnent en arrière-plan.
  • Ils sont souvent appelés démons (daemons), les noms des services se terminent par un d (par exemple un service http se nommera httpd).
  • Dépendant de la distro Linux et de la version de celle-ci, un programme permettra de gérer le démarrage et l’arrêt des services (le standard actuel est systemd et le programme utilisé est systemctl).
  • Il est possible de démarrer un service au démarrage de la machine (ce qui est le plus fréquent) on parle d’automatisation au démarrage ou encore du démarrage au besoin en faisant appel à la commande de gestion.
  • Il se peut que vous vouliez rendre accessible un service en particulier (comme un serveur Web par exemple). Il faut donc connaître comment activer ou désactiver de tels services afin de minimiser les problèmes potentiels et aussi de diminuer la charge du serveur en activant des services dont on ne se servira pas.
  • Il est important de ne pas démarrer des services inutiles, car la façon la plus simple de refuser l’accès à un service est tout simplement de le désactiver.

Historique

Différents système de gestion des services sont utilisés par les distributions GNU/Linux. Par exemple :

  • SysVinit (init System V).
  • UpStart.
  • systemd.

SysVinit est le classique système de démarrage et de gestion des services qui a été utilisé jusqu’à Fedora 8.

UpStart a remplacé SysVinit dans Fedora 9, jusqu’à Fedora 14.

systemd prend maintenant place dans la plupart des distributions dont la distribution Linux AlmaLinux.

Quand sont lancés les services?

  • Certains services sont lancés par défaut au démarrage du système. Par défaut, il s’agit d’un choix des concepteurs de la distribution. Ce choix, comprenant des services essentiels et d’autres qui le sont moins.
  • Vous pouvez choisir de désactiver certains services qui ne sont pas essentiels. Pourquoi ? Parce que vous n’en avez pas besoin, ou parce que vous n’en avez pas besoin souvent ou très rarement.
  • Vous pouvez aussi choisir d’arrêter momentanément des services. Par exemple, pour voir ce que ça fait (ou ne fait plus …), avant de les désactiver complétement.
  • Vous pouvez activer des services qui ne sont pas parti par défaut, mais dont vous avez besoin.
  • Et enfin, vous pouvez lancer certain service uniquement au besoin.

Cibles d’exécution (niveaux d’exécution)

SysVinit et Upstart ont une notion de niveau d’exécution (RunLevel). systemd a une notion de cible (target).

Sans enter plus dans les détails, à un niveau d’exécution ou une cible correspond un mode de fonctionnement du système où certains services sont arrêtés tandis que d’autres sont lancés.

Le tableau ci-dessous décrits les différents modes de fonctionnement standard. (tel que nous l’avons vu dans la section sur la séquence de boot du chapitre 2):

Cibles systemd Utilité
poweroff ou runlevel 0 Arrêt du système
rescue ou runlevel 1 Mode utilisateur unique, mode de maintenance
multi-user ou runlevel3 Mode multi-utilisateur non graphique
graphical ou runlevel5 Mode multi-utilisateur graphique
reboot ou runlevel6 Redémarrage du système
emergency shell d’urgence

Gestion des services

Dans cette section, nous allons voir comment (dans la ligne de commande - shell) :

  • Changer de niveau / cibles d’exécution.
  • Lancer un service.
  • Arrêter un service.
  • Activer un service.
  • Désactiver un service.
  • Vérifier l’état d’un service.

Changer la cible ou le niveau d’exécution immédiatement

systemctl isolate CIBLE ou systemctl isolate CIBLE.target

Par exemple :

  • systemctl isolate multi-user ou systemctl isolate runlevel3, pour passer en mode multi-utilisateur console (non-graphique).
  • systemctl isolate graphical ou systemctl isolate runlevel5, pour passer en mode multi-utilisateur graphique.

Changer la cible ou le niveau d’exécution par défaut

systemctl set-default CIBLE ou systemctl set-default CIBLE.target

Par exemple :

  • systemctl set-default multi-user ou systemctl set-default runlevel3, pour passer en mode multi-utilisateur console (non-graphique) par défaut.
  • systemctl set-default graphical ou systemctl set-default runlevel5, pour passer en mode multi-utilisateur graphique par défaut.

Lancer un service

systemctl start NOM

Par exemple :

  • systemctl start sshd ou systemctl start sshd.service pour démarrer le service sshd (service ssh serveur).

Lancement versus activation

Le lancement d’un service permet de démarrer le service immédiatement, mais n’est pas suffisant pour qu’il soit redémarré au prochain lancement du système. Si on veut que le service soit démarré à chaque lancement du système on doit l’activer (voir plus loin).

Arrêter un service

systemctl stop NOM

Par exemple :

  • systemctl stop sshd ou systemctl stop sshd.service pour arrêter le service sshd (service ssh serveur).

Arrêt versus désactivation

L’arrêt d’un service permet de stopper le service immédiatement, mais n’est pas suffisant pour qu’il ne soit pas redémarré au prochain lancement du système. Si on veut que le service ne soit pas démarré à chaque lancement du système on doit le désactiver (voir plus loin).

Activer un service

systemctl enable NOM

Par exemple :

  • systemctl enable sshd ou systemctl enable sshd.service pour démarrer automatiquement le service sshd (service ssh serveur) au lancement du système.

Au moment où on enregistre l’activation du service, le service n’est pas immédiatement démarré, alors il faut en plus le démarrer. L’activation n’affecte que le démarrage automaituqe du service pour les prochains lancements du système.

Désactiver un service

systemctl disable NOM

Par exemple :

  • systemctl disable sshd ou systemctl disable sshd.service pour annuler le démarrage automatique du service sshd (service ssh serveur) au lancement du système.

Au moment où on enregistre la désactivation du service, le service n’est pas immédiatement arrêté, alors il faut en plus l’arrêter. La désactivation n’affecte que le non démarrage du service pour les prochains lancements du système.

Vérifier l’état d’un service

systemctl status NOM

Par exemple :

  • systemctl status sshd ou systemctl status sshd.service pour vérifier l’état du service sshd (service ssh serveur).
  • systemctl is-enabled sshd ou systemctl is-enabled sshd.service pour vérifier l’état du démarrage automatique du service sshd (service ssh serveur) au lancement du système.

Exemples:

# systemctl status sshd
  sshd.service - OpenSSH server daemon
     Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; preset: enabled)
     Active: active (running) since Wed 2026... 13:11:55 EST; 4h 46min ago
       Docs: man:sshd(8)
             man:sshd_config(5)
   Main PID: 1012 (sshd)
      Tasks: 1 (limit: 22775)
     Memory: 3.2M (peak: 3.4M)
        CPU: 20ms
     CGroup: /system.slice/sshd.service
             └─1012 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"

Deux informations importantes disponibles avec l’option status:

  1. Deuxième ligne, le mot enabled après Loaded: … qui indique que le service est activé
  2. Troisième ligne, le mot active (running) après Active: … qui indique que le service est démarré
# systemctl status sshd
  sshd.service - OpenSSH server daemon
     Loaded: loaded (/usr/lib/systemd/system/sshd.service; disabled; preset: enabled)
     Active: inactive (dead)
       Docs: man:sshd(8)
             man:sshd_config(5)

Deux informations importantes disponibles avec l’option status:

  1. Deuxième ligne, le mot disabled après Loaded: … qui indique que le service est désactivé
  2. Troisième ligne, le mot inactive (dead) après Active: … qui indique que le service est arrêté