O processo de kill falha

1

Estou executando um script bash como um trabalho em segundo plano. O script bash chama um executável demorado. Se eu não estiver errado, a execução do script bash é o processo pai e a execução do executável é o processo filho.

Agora quero interromper a execução inteira, eliminando o processo pai, que é o trabalho em segundo plano

kill -9 $(jobs -p)

O terminal mostra que a execução do script bash é eliminada. Mas a execução do executável ainda trava na saída do topo. Eu só queria saber como também matar o processo infantil?

    
por Tim 04.01.2010 / 20:02

2 respostas

1

Use um PID negativo que fará com que um grupo de processos seja eliminado. O -- diz matá que o resto dos argumentos não são interruptores de opção para que o hífen (menos) antes do PID não vai confundi-lo.

kill -- -12345

Além disso, -9 é o último recurso. Não use até que você tenha tentado pelo menos -15 (SIGTERM, que é o padrão) primeiro. Isso dá a um programa a chance de fazer o serviço de limpeza antes de sair. Consulte Quando devo usar kill -9 ou uso inútil de kill -9 ou kill -9 .

    
por 04.05.2010 / 09:45
0

killall pode fornecer melhores resultados.

Aviso : o killall se comporta de maneira diferente nos diferentes * nix's. No Linux, ele eliminará os processos com os títulos correspondentes ao argumento. No Solaris, ele matará CADA processo , não apenas os que você especificar. Portanto, no Solaris, executar o killall como root efetivamente encerrará a máquina. Verifique se você sabe qual comportamento o comando segue

    
por 04.01.2010 / 20:25