La solución es agregar
KillMode=process
al bloque de servicio. El valor predeterminado es control-group
lo que significa que systemd limpia cualquier proceso secundario.
De man systemd.kill
KillMode=Especifica cómo se eliminarán los procesos de esta unidad. Uno de grupo de control, proceso, mixto, ninguno.
Si se establece en grupo de control, todos los procesos restantes en el grupo de control de esta unidad se eliminarán cuando se detenga la unidad (para servicios:después de ejecutar el comando de detención, como se configuró con ExecStop=). Si se establece en proceso, solo se elimina el proceso principal. Si se establece en mixto, la señal SIGTERM (ver más abajo) se envía al proceso principal mientras que la señal SIGKILL subsiguiente (ver más abajo) se envía a todos los procesos restantes del grupo de control de la unidad. Si se establece en ninguno, no se elimina ningún proceso. En este caso, solo se ejecutará el comando de parada en la parada de la unidad, pero de lo contrario no se eliminará ningún proceso. Los procesos que permanecen vivos después de la detención se dejan en su grupo de control y el grupo de control continúa existiendo después de la detención a menos que esté vacío.