« 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"
[Unit]Wants, After[Service]ExecStart, Type[Install]WantedBy03Valide 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
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.