Linux — utilisation avancée et administration · Étape 18

Administre les unités, targets et dépendances systemd

Lis la priorité des unités, valide un service, explore ses dépendances et teste une installation utilisateur réversible.

Durée indicative · ~1 h 40Niveau intermédiairePrérequis conseillé · Leçon 17 — GRUB2 et plan de récupérationPratique · TP
L’idée reçue

« After=network.target démarre automatiquement le service avec le réseau. »

After définit un ordre si les deux unités sont déjà dans la transaction. Il ne crée pas à lui seul une dépendance de démarrage.

01Observe les sources d’unités

systemd-analyze unit-paths
systemctl cat ssh.service 2>/dev/null || systemctl cat sshd.service 2>/dev/null || true
systemctl show -p FragmentPath -p DropInPaths ssh.service 2>/dev/null || true

Les unités administrateur dans /etc/systemd/system ont priorité sur les unités livrées par les paquets. Les drop-ins permettent de surcharger un paramètre sans recopier tout le fichier.

02Lis le service du laboratoire

export LAB="/tmp/soria-linux-systemd-$USER"
sed -n '1,120p' "$LAB/units/soria-agent.service"
sed -n '1,80p' "$LAB/units/soria-lab.target"
Section
Rôle
Exemples
[Unit]
description, conditions, dépendances et ordre
Wants, After
[Service]
processus, type, environnement et redémarrage
ExecStart, Type
[Install]
liens créés lors de enable
WantedBy

03Valide sans installer

./module4-systemd-boot-lab.sh validate
systemd-analyze verify "$LAB/units/soria-agent.service" "$LAB/units/soria-lab.target"

systemd-analyze verify détecte de nombreuses erreurs de directives, chemins et dépendances. Il ne prouve pas que l’application fonctionne.

04Compare dépendance et ordre

systemctl list-dependencies multi-user.target | sed -n '1,60p'
systemctl show multi-user.target -p Wants -p Requires -p After -p Before
Wants ajoute une dépendance faible. Requires est plus forte. After et Before règlent seulement l’ordre.

05Installe comme unité utilisateur

Cette manipulation reste dans le compte courant. Elle nécessite une session systemd utilisateur active.

mkdir -p "$HOME/.config/systemd/user"
cp "$LAB/units/soria-agent.service" "$HOME/.config/systemd/user/soria-agent.service"
cp "$LAB/units/soria-lab.target" "$HOME/.config/systemd/user/soria-lab.target"
systemctl --user daemon-reload
systemctl --user start soria-agent.service
systemctl --user status soria-agent.service --no-pager

Le service est oneshot : il exécute l’agent une fois puis termine. Son résultat et ses journaux seront étudiés dans la leçon suivante.

06Explore la transaction

systemctl --user list-dependencies soria-lab.target
systemctl --user show soria-agent.service -p LoadState -p ActiveState -p SubState -p FragmentPath -p ExecStart -p Result

07Nettoie proprement

systemctl --user stop soria-agent.service 2>/dev/null || true
systemctl --user disable soria-agent.service 2>/dev/null || true
rm -f "$HOME/.config/systemd/user/soria-agent.service" "$HOME/.config/systemd/user/soria-lab.target"
systemctl --user daemon-reload
systemctl --user reset-failed
Challenge autonome

Conçois une unité vérifiable

Crée une unité oneshot utilisateur qui écrit une preuve dans le journal. Ajoute une condition de chemin, un fichier d’environnement et un target. Valide, démarre, inspecte, arrête et supprime sans utiliser sudo.

Ce que tu retiens

Une unité systemd exprime exécution, dépendances et politique de démarrage. La validation, le test utilisateur et le nettoyage sont distincts de l’installation système.

Ta progression

Chargement de l’état… Se connecter pour synchroniser.