Créer un service systemd

Systemd est un ensemble de programmes destiné à la gestion système. Systemd se manipule grâce à la commande systemctl.

Pour savoir si l’on est sous systemd ou System V : https://n0tes.fr/2022/01/12/SystemV-et-SystemD/

Créer un service

Ce service démarrera un script qui nous rappellera de faire une pause visuelle toutes les 30 minutes.

On crée un fichier /etc/systemd/system/test.service

[Unit]
Description=Test de service
After=tlp-init.service

[Service]
Type=oneshot
RemainAfterExit=no
ExecStart=/usr/local/bin/montest.sh

[Install]
WantedBy=multi-user.target

Les sections :

  • [Unit] : informations générique sur le service
  • [Service] : informations sur le service
  • [Install] : circonstances et déclencheurs pour démarrer

Lancement, reload et status

Pour lui donner les droits :

# chmod 755 /etc/systemd/system/nomService.service

L’activer :

# systemctl enable nomService

Pour le lancer :

# systemctl start monService.service

Pour le reload :

# systemctl reload monService.service

Pour le reload en cas de modification directe du fichier /etc/systemd/system/test.service:

# systemctl daemon-reload

Pour vérifier son statut :

# systemctl status test.service
● test.service - Pause Visuelle
Loaded: loaded (/etc/systemd/system/test.service; enabled; vendor preset: enabled)
Active: activating (start) since Fri 2022-01-21 17:04:39 CET; 11s ago
Main PID: 2063548 (bash)
Tasks: 2 (limit: 9180)
Memory: 524.0K
CPU: 1ms
CGroup: /system.slice/test.service
├─2063548 /bin/bash /root/scripts/test.sh
└─2063549 sleep 1800

janv. 21 17:04:39 LENOVOM70Q systemd[1]: Starting Test de service...
janv. 21 17:04:39 LENOVOM70Q bash[2063548]: Test de service

Pour le désactiver

# systemctl disable test.service

Pour le supprimer

# rm /etc/systemd/system/test.service

Le script

Prés-requis

Le script à lancer doit absolument :

  • Signaler son interpréteur de commande #!/bin/bash
  • Avoir les droits en exécution
  • Avoir les droits root

Contenu

Le script pout le test est très basique, il liste simplement le dossier /home/user1/photos

#!/bin/bash

while true
do
ls /home/user1/photos >> listePhotos.txt
done

Documentation

https://lea-linux.org/documentations/Systemd
https://paranoiaque.fr/2020/04/26/creer-service-systemd/
https://hoper.dnsalias.net/atdc/index.php/2017/04/24/20170424creation-d-un-service-simple-avec-systemd/
https://www.malekal.com/systemd-service-linux-configuration-et-fonctionnement-daemon/
https://access.redhat.com/documentation/fr-fr/red_hat_enterprise_linux/7/html/system_administrators_guide/chap-managing_services_with_systemd
https://debian-facile.org/doc:programmation:bash:script:systemd:script-sur-un-vt
https://linuxapt.com/blog/496-run-shell-script-as-systemd-service-in-linux

> Partager <