Généralités système Linux

systemd : Créer des services, timers (unités)

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Table des matières

systemd




Introduction



Dans cet article, on va voir comment créer un service systemd et comment se compose un service.


Généralités



Rappels systemd



Un service est un programme qui est exécuté en tache de fond (sans interaction directe avec l'utilisateur). A noter qu'un service peut être appelé également démon.
Chez systemd, on ne parle pas de service, mais d'unité.
Il existe des unités service, comme on l'entend avec OpenRC ou du temps de sysVinit, mais il existe d'autres unités telles que "automount", "path", "mount", "target", "timer", "wants" et "socket".

Types de services



Du côté des services, il existe plusieurs types de service. C'est défini dans le fichier de configuration par Type= avec comme valeur possible : simple, forking, oneshot, dbus, notify.

Nous allons rester simple et ne traiter que les cas suivants :

- Service simple : C'est le type par défaut. Il lance un processus principal. Le créateur du service doit s'assurer de créer les canaux de communication ou de lancer les processus avant le lancement du dit service. Systemd ne se préoccupe pas de la fin de l'exécution du service pour traiter d'autres unités.
- Service oneshot : Le fonctionnement est similaire au type simple. Cependant, systemd attend que le processus soit terminé avant de continuer ses traitement. (Fonctionnement similaire des services sysVinit, au rc.local)
- Service forking : Ce service lance un processus père, qui créera un processus fils. Le processus parent s'arrête une fois le service complètement démarré (canaux de communication inclus). Le processus fils tourne tant que le service est démarré. Systemd traite les autres unités une fois le processus père précédemment décrit est terminé. Par analogie, ce sont ainsi que fonctionnent les scripts unix traditionnels.


Syntaxe d'un service





Exemples