systemd prend déjà cela en charge, et il est activé par défaut.
La seule chose que vous voudrez peut-être personnaliser est le délai d'attente, que vous pouvez faire avec TimeoutStopSec=
. Par exemple :
[Service]
TimeoutStopSec=2
Maintenant, systemd enverra un SIGTERM, attendra deux secondes que le service se ferme, et s'il ne le fait pas, il enverra un SIGKILL.
Si votre service n'est pas compatible avec systemd, vous devrez peut-être fournir le chemin d'accès à son fichier PID avec PIDFile=
.
Enfin, vous avez mentionné que votre démon génère de nombreux processus. Dans ce cas, vous pouvez définir KillMode=control-group
et systemd enverra des signaux à tous les processus du groupe de contrôle.