Aller au contenu
Cours
systemd : l’essentiel

Chapitre 1 sur 1

Les unités et leurs fichiers

systemd est le système d’init de presque toutes les distributions Linux courantes. C’est le premier processus lancé par le noyau (PID 1) et il gère le cycle de vie de chaque service de la machine.

Les unités

systemd représente tout ce qu’il gère sous forme d’unités. Une unité est décrite par un fichier texte, et son suffixe indique à systemd de quoi il s’agit.

  • .service - un démon ou une commande exécutée une seule fois

  • .socket - une socket en écoute, capable de démarrer son service à la demande

  • .timer - un déclencheur planifié, le remplaçant moderne de cron

  • .mount / .automount - un point de montage

  • .target - un regroupement d’unités, l’équivalent des anciens niveaux d’exécution

Où vivent les fichiers d’unité

Trois répertoires contiennent les fichiers d’unité, par priorité croissante. Un fichier situé dans un répertoire plus prioritaire remplace intégralement celui du même nom en dessous.

bash
/usr/lib/systemd/system/   # fourni par les paquets - ne pas modifier
/run/systemd/system/       # runtime, volatile
/etc/systemd/system/       # surcharges locales - c’est ici qu’on écrit
Attention

Ne modifiez jamais directement un fichier sous /usr/lib/systemd/system : la prochaine mise à jour du paquet l’écrasera. Utilisez `systemctl edit` pour créer une surcharge.

Un service minimal

ini/etc/systemd/system/example-api.service
[Unit]
Description=Serveur API d’exemple
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
ExecStart=/usr/local/bin/example-api --port 8080
Restart=on-failure
RestartSec=5s
User=example

[Install]
WantedBy=multi-user.target

Les trois sections répondent à trois questions : quand cette unité doit-elle démarrer par rapport aux autres, comment le processus est-il lancé, et qu’est-ce qui doit l’activer au démarrage.

À retenir
  • systemd est le PID 1 et gère chaque service comme une unité.

  • Le type d’unité vient du suffixe du fichier : .service, .socket, .timer, .target.

  • Les surcharges locales vont dans /etc/systemd/system, jamais dans /usr/lib.

  • [Unit] définit l’ordre, [Service] la façon de lancer, [Install] ce qui l’active.

Les unités et leurs fichiers · systemd : l’essentiel · Courses