systemd ya admite esto de fábrica y está habilitado de forma predeterminada.
Lo único que quizás desee personalizar es el tiempo de espera, que puede hacer con TimeoutStopSec=
. Por ejemplo:
[Service]
TimeoutStopSec=2
Ahora, systemd enviará un SIGTERM, esperará dos segundos para que el servicio finalice y, si no lo hace, enviará un SIGKILL.
Si su servicio no es compatible con systemd, es posible que deba proporcionar la ruta a su archivo PID con PIDFile=
.
Finalmente, mencionó que su daemon genera muchos procesos. En este caso, es posible que desee configurar KillMode=control-group
y systemd enviará señales a todos los procesos en cgroup.