matando todos os processos relacionados a um script

0

Eu tenho um script que chama muitos programas sequencialmente. Como eu poderia terminar este roteiro de uma vez por todas? Eu sei que eu poderia clicar em Ctrl + C para cancelar parte do processo, mas matar todo o processo exigiria clicar naquele múltiplo (milhares ou dezenas de milhares) vezes. Como eu poderia terminar um script simplesmente por um relógio ou um comando? (ou comando múltiplo?)

    
por user40780 08.09.2015 / 21:53

2 respostas

2

O problema é que o sinal Ctrl + C nunca alcança o script, mas apenas os processos iniciados. Você pode tentar deixar seu dedo no C quando pressionar Ctrl + C continuamente. Eventualmente, o sinal chega ao shell e nenhum novo programa está sendo iniciado.

Ou você pode acessar Ctrl + Z e digitar kill %1 .

Isso suspende todo o script e, em seguida, mata tudo.

    
por 08.09.2015 / 22:14
1
 1. Get the script name (say abc.sh)
 2. ps -ef | grep "abc.sh" | awk '{print "kill "$2}' > file.sh
 3. /bin/bash file.sh

Você pode usar a opção -9 com kill. Isso também matará o processo pai se o script abc.sh tiver algum processo pai. Então sugiro usá-lo com sabedoria. A maioria dos casos funcionaria bem com mais de 3 etapas.

    
por 08.09.2015 / 22:48