La solution est d'ajouter
KillMode=process
au bloc de service. La valeur par défaut est control-group
ce qui signifie que systemd nettoie tous les processus enfants.
De man systemd.kill
KillMode=Spécifie comment les processus de cette unité doivent être tués. L'un des groupes de contrôle, processus, mixte, aucun.
S'il est défini sur groupe de contrôle, tous les processus restants dans le groupe de contrôle de cette unité seront tués à l'arrêt de l'unité (pour les services :après l'exécution de la commande d'arrêt, comme configuré avec ExecStop=). S'il est défini sur process, seul le processus principal lui-même est tué. S'il est réglé sur mixte, le signal SIGTERM (voir ci-dessous) est envoyé au processus principal tandis que le signal SIGKILL suivant (voir ci-dessous) est envoyé à tous les processus restants du groupe de contrôle de l'unité. S'il est défini sur aucun, aucun processus n'est tué. Dans ce cas, seule la commande d'arrêt sera exécutée à l'arrêt de l'unité, mais aucun processus ne sera tué autrement. Les processus restant actifs après l'arrêt sont laissés dans leur groupe de contrôle et le groupe de contrôle continue d'exister après l'arrêt à moins qu'il ne soit vide.