Création service Systemd
L'idée est d'illustrer la mise en place d'un service réalisé par un utilisateur pseudo. Pour cela on communique avec lui par un tube nommé sauvegarde.entrée et la réponse à l'ordre est rendu par un tube nommé sauvegarde.sortie.
Le texte du service /Maison/pseudo/service/sauvegarde.service est :
[Unit]
Description=Sauvegarde data
After=systemd-user-sessions.service
[Service]
Type=simple
ExecStart=/Maison/pseudo/service/sauvegarde.script.sh
User=pseudo
Group=pseudo
[Install]
WantedBy=multi-user.target
Le texte du script /Maison/pseudo/service/sauvegarde.script.sh est
#! /usr/bin/bash
#-----------------------------------------------------------------
#
#-----------------------------------------------------------------
rep=/Maison/pseudo/service
while true
do
while read ordre
do
eval "$ordre"
done < $rep/sauvegarde.entrée > $rep/sauvegarde.sortie
done
exit 0
Rappel : mkfifo est la commande qui permet de créer les “tubes” service_ordre et service_reponse, donc pour les créer il faut passer la commande :
mkfifo /Maison/pseudo/service/sauvegarde.entrée /Maison/pseudo/service/sauvegarde.sortie
Déclarer son service auprès du système
Pour cela il faut
se rendre dans un terminal,
être administrateur ( avoir le droit de passer des commandes sudo )
et passer les commandes suivantes :
Remarque : dans la suite de ce tutoriel, vous remarquerez qu'à chaque fois que vous utiliserez la commande systemctl il vous sera demandé votre mot de passe, seul un administrateur est habilité à l'utiliser
systemctl enable /Maison/pseudo/service/sauvegarde.service
en réponse le commande systemctl informe de la création d'un lien symbolique en cas de succès et l'on peut alors démarrer le service en passant la commande
systemctl start sauvegarde.service
Pour arrêter le service il suffit de passer la commande
systemctl stop sauvegarde.service
Remarques :
Lors d'une modification du service ( modification du script ) il ne faut pas oublier de stopper le service puis de le relancer.
Lors de l'arrêt de la machine le système arrête “proprement” le service
Lors du redémarrage de la machine il ne faut pas de repasser le commande systemctl enable /Maison/pseudo/service/sauvegarde.service si l'on souhaite retirer le service du sytème il faut passer la commande systemctl disable sauvegarde.service
Il est possible de savoir si un service est reconnu par le système. Dans l'exemple le test est systemctl is-enabled sauvegarde.service en cas de succès la réponse est enabled
Il est possible de savoir si un service est lancé ou non dans le système. Dans l'exemple le test est systemctl is-activate sauvegarde.service en cas de succès la réponse est active