Aller au contenu principal

Créer et dépanner un service systemd

Machine : VM uniquement. Adapter ces commandes à la configuration existante ; ne pas écraser une unité déjà utilisée.

Création​

sudo tee /etc/systemd/system/lab-demo.service > /dev/null <<'EOF'
[Unit]
Description=Service de démonstration Linux

[Service]
Type=simple
ExecStart=/usr/bin/sleep infinity
EOF

sudo systemctl daemon-reload
sudo systemctl start lab-demo.service
systemctl status lab-demo.service --no-pager

Le programme reste au premier plan et attend. Exemple de PID : 1472. Un PID n’est pas un identifiant permanent du service : il peut changer au redémarrage.

Panne contrôlée​

sudo sed -i 's|ExecStart=/usr/bin/sleep infinity|ExecStart=/usr/bin/sleep-inexistant infinity|' /etc/systemd/system/lab-demo.service
sudo systemctl daemon-reload
sudo systemctl restart lab-demo.service
systemctl status lab-demo.service --no-pager --full
sudo journalctl -u lab-demo.service -b --no-pager --full -n 15

Exemple de résultat : failed et message Failed at step EXEC spawning .... Dans cet exemple, la cause est le chemin inexistant. En général, une erreur à l’étape EXEC peut aussi venir de permissions ou d’un interpréteur indisponible : lire le message complet avant de conclure.

Une ligne terminée par > dans l’affichage peut être tronquée. Utiliser --full pour lire la cause complète. Le code 203/EXEC est typiquement associé à ce type d’échec .

Réparation​

sudo sed -i 's|ExecStart=/usr/bin/sleep-inexistant infinity|ExecStart=/usr/bin/sleep infinity|' /etc/systemd/system/lab-demo.service
sudo systemctl daemon-reload
sudo systemctl restart lab-demo.service
systemctl status lab-demo.service --no-pager --full

Résultat attendu : active (running).

Démarche : constater → lire les journaux → identifier la cause → corriger → recharger la définition → redémarrer → vérifier.