Não há como fazer isso usando apenas os campos de ID numéricos. No Linux isso pode ser resolvido usando grupos de controle (cgroups) porque eles são hierárquicos e um processo não pode escapar do cgroup.
É por isso que os sistemas init tradicionais não tinham uma maneira confiável de determinar quais processos foram iniciados por um serviço específico e, portanto, nenhuma maneira confiável de eliminá-los, ao contrário do systemd, que depende dos cgroups para acompanhar a árvore de processos.