linux / solaris mata muitos processos com um comando

1

É possível matar todo o processo de localização com um comando?

Eu não quero matar cada processo como kill -9 25295 , kill -9 11994 , etc. Em vez disso, o que eu quero é uma maneira simples ou um comando que mate todo o processo de localização (meu alvo é realizar essa ação no linux e máquinas solaris).

$ ps -ef | grep find 
root 25295 25290   0 08:59:59 pts/1 0:01 find /etc -type f -exec grep -l 100.106.23.152 {} ; -print
root 11994 26144   0 09:04:18 pts/1 0:00 find /etc -type f -exec grep -l 100.106.23.153 {} ; -print
root 25366 25356   0 08:59:59 pts/1 0:01 find /etc -type f -exec grep -l 100.106.23.154 {} ; -print
root 26703 26658   0 09:00:05 pts/1 0:01 find /etc -type f -exec grep -l 100.106.23.155 {} ; -print
    
por yael 25.11.2012 / 15:13

3 respostas

5

Isso funcionará no Linux e no Solaris e fará exatamente o que você precisa:

pgrep -f 'find /etc'     # verify the listing before proceeding
pkill -9 -f 'find /etc'

Na sua situação, evite killall . Se você usá-lo no Linux, mais cedo ou mais tarde você irá confundir as sessões ssh, executá-lo no Solaris, criando riscos desnecessários.

A opção -f de pgrep / pkill significa corresponder à linha de comando inteira. Caso você precise corresponder o caminho do programa ou script ( /var/tmp/test.sh ), isso funcionará se você o tiver executado com o caminho inteiro. Para ser preciso, você só precisa escapar do . , então você precisa

pkill -9 -f '/var/tmp/test\.sh'

Se você executou o mesmo programa que ./test.sh , precisará matá-lo como tal. Veja a opção -f em ps .

    
por 25.11.2012 / 16:04
3

Use pkill find , que é uma variante de pgrep ( process grep ). No Linux, killall find também funcionaria.

    
por 25.11.2012 / 15:46
0

Sim, você pode usar o comando killall

killall find 
    
por 25.11.2012 / 15:38