Quelle est la différence entre systemd
service Type
oneshot
et simple
? Ce lien indique qu'il faut utiliser simple
au lieu de oneshot
pour les minuteries. Je ne suis pas capable de comprendre correctement.
Le Type=oneshot
unité de service:
bloque une opération de démarrage jusqu'à la fin du premier processus et son état sera signalé comme "activant";
une fois que le premier processus est terminé, le passage de "l'activation" à l'état "inactif", à moins que RemainAfterExit=true
est défini (dans ce cas, il devient "actif" sans processus!);
peut avoir un nombre quelconque (0 ou plus) de ExecStart=
directives qui seront exécutées séquentiellement (attendre que chaque processus démarré se termine avant de démarrer le suivant);
peut laisser de côté ExecStart=
mais j'ai ExecStop=
(utile avec RemainAfterExit=true
pour que les choses fonctionnent lors de l’arrêt du système).
Le Type=simple
unité de service:
ne bloque pas une opération de démarrage (c.-à-d. devient "actif" immédiatement après la suppression du premier processus, même s'il est toujours en cours d'initialisation!);
une fois le premier processus terminé, passe de "actif" à "inactif" (il n'y a pas de RemainAfterExit=
option);
est généralement déconseillée car il n’existe aucun moyen de distinguer des situations telles que "sortie au démarrage à cause d’une erreur de configuration" de "crashé après 500 ms d’exécution" et ainsi de suite.
Tous les deux Type=oneshot
et Type=simple
unités:
Type=oneshot
avec KillMode=none
, mais ne le faites que si vous savez ce que vous faites).Du point de vue de systemd, Type=simple
est une sorte de feu et oublie. Systemd se contente de lancer un processus défini dans ExecStart=
et continue, même si le processus ne démarre pas.