Aller au contenu principal

Remplacer sleep par un script et observer ses journaux

Outils vérifiés dans la VM : /usr/bin/bash, /usr/bin/date, /usr/bin/sleep.

Exemple de script : /usr/local/libexec/lab-demo.sh, installé sous root avec mode 0755.

#!/usr/bin/bash
set -eu

while true; do
printf 'lab-demo : activité à %s\n' "$(/usr/bin/date --iso-8601=seconds)"
/usr/bin/sleep 10
done

Le shebang indique l’interpréteur. set -e fait quitter le shell sur certains échecs de commandes, avec des exceptions selon le contexte ; ce n’est pas une gestion exhaustive des erreurs. set -u signale l’utilisation de variables non définies. while true répète la boucle ; printf écrit sur la sortie standard ; la substitution $(...) fournit la date ; sleep 10 espace les messages d’environ dix secondes. Le compte du service peut exécuter le script sans pouvoir le modifier si les permissions des fichiers et dossiers restent celles proposées.

Exemple de complément : /etc/systemd/system/lab-demo.service.d/command.conf.

[Service]
ExecStart=
ExecStart=/usr/local/libexec/lab-demo.sh
StandardOutput=journal
StandardError=journal

La ligne vide ExecStart= réinitialise la commande du fichier principal avant d’en définir une nouvelle. Les sorties standard et d’erreur sont envoyées au journal.

Après daemon-reload et restart, vérifier que le service est active (running) et que les journaux affichent un message environ toutes les dix secondes. Le PID du processus sleep change à chaque itération. Un démarrage manuel ne configure pas le démarrage automatique.

sudo journalctl -u lab-demo.service -n 10 --no-pager
systemctl status lab-demo.service --no-pager --full

Le journal initial mélange les messages de systemd sur les arrêts/démarrages et ceux du script. Le statut montre le processus principal et les enfants appartenant au cgroup du service.

Suivre les messages avec sudo journalctl -u lab-demo.service -f, puis quitter avec Ctrl+C. Vérifier avec systemctl is-active lab-demo.service que le service fonctionne toujours. Ctrl+C arrête le client journalctl au premier plan, pas le service géré par systemd.

Pour aller plus loin : filtrer les messages du démarrage courant (-b), sur une période (--since) et afficher uniquement leur texte (-o cat).