É melhor / preferido matar todos os processos filhos usando o PPID ou o PGID?

1

Eu preciso da habilidade de matar todos os processos filhos que estão sendo executados sob um pai específico. Qual seria a melhor opção para fazer isso? Usando o PPID ou o PGID?

Algo parecido com isto:

pkill -TERM -P

Mataria as crianças usando um PPID. Mas eu li alguns pedaços aqui e ali sobre o PGID e estou curioso para saber se um funciona melhor do que o outro.

    
por user53029 07.08.2015 / 15:26

1 resposta

4

Matar um processo pai não eliminará processos filhos, a menos que o pai intercepte e reenvie o sinal.

Matar um grupo de processos com TERM envia o sinal TERM para todos os membros do grupo de processos, mas você deve certificar-se de que o pai inicie um grupo de processos (ou que o pai dos pais inicie um grupo de processos e você não se preocupa com a possibilidade de os pais do pai receberem o sinal TERM se ainda estiverem vivos).

Se você estiver usando um shell para iniciar o pai (ou o pai do pai), então você não precisa se preocupar com isso, porque cada chamada de comando no shell inicia um grupo de processos.

(Há um recurso específico do Linux que pode ser usado para dizer ao kernel para enviar um sinal aos filhos quando o pai deles morre, mas no seu Unix padrão, isso não acontece até onde eu sei. Confira prctl (2) e procure por DEATHSIG se você quiser saber mais sobre isso).

    
por 07.08.2015 / 15:48