O pkill se mata (e seus processos pai) por último?

2

Estou escrevendo um script que mata vários processos selecionados por determinados critérios e, em seguida, sai. O único problema é que esses critérios se aplicam ao script e seus processos pai ( bash , sshd ), portanto, para evitar a eliminação do script antes que ele tenha feito seu trabalho, primeiro obtenho os processos correspondentes com ps , depois filtre o script e seus pais com sed e finalmente mate os processos restantes com kill .

Agora eu estou querendo saber se eu poderia simplificar isso para uma única chamada pkill , mas obviamente isso só funcionará se pkill tiver a garantia de se matar e seus processos pai last se ocorrem na lista de processos para matar.

Existe tal garantia implementada em pkill ?

    
por pmos 19.06.2016 / 12:47

1 resposta

2

pkill nunca se mata, assim como pgrep nerver se lista; pkill faz sair depois de matar cada processo que corresponde aos critérios, exceto ele mesmo. pkill mata seus pais se eles corresponderem aos critérios, mas se o pai for um shell a menos que você use um sinal não identificável (geralmente apenas -9 aka - [SIG] KILL) o shell normalmente o ignora. Se incluir o seu sshd que realmente vai matar a sua sessão, e com ela o seu shell e (a maioria?) Outros processos, o que geralmente é indesejado.

Você pode querer usar pgrep para encontrar os processses, talvez com -l ou -lf , e fazer verificações adicionais antes de kill ns.

    
por 19.06.2016 / 15:41