Como matar todo o processo com nome próprio?

11

Eu executo o comando ps -A | grep <application_name> e obtendo uma lista de processos assim:

19440 ?        00:00:11 <application_name>
21630 ?        00:00:00 <application_name>
22694 ?        00:00:00 <application_name>

Eu quero matar todos os processos da lista: 19440 , 21630 , 22694 .

Eu tentei ps -A | grep <application_name> | xargs kill -9 $1 , mas funciona com erros.

kill: illegal pid ?
kill: illegal pid 00:00:00
kill: illegal pid <application_name>

Como posso fazer isso com graça?

    
por Łukasz D. Tulikowski 13.10.2016 / 02:29

3 respostas

18
pkill -f <application_na>

Matará todos os processos que contiverem o padrão <application_na> em seus nomes.

homem pkill

    
por 13.10.2016 / 09:17
8

O problema é que ps -A | grep <application_name> | xargs -n1 retorna a saída como esta

19440
?
00:00:11
<application_name>
21630
?
00:00:00
<application_name>
22694
?
00:00:00
<application_name>

Você pode usar awk para obter primeiro uma coluna de ps output .

ps -A | grep <application_name> | awk '{print $1}' | xargs -n1

Irá retornar a lista de PIDs

19440
21630
22694

E adicionando kill -9 $1 você tem um comando que mata todos os PIDs

ps -A | grep <application_name> | awk '{print $1}' | xargs kill -9 $1
    
por 13.10.2016 / 02:57
0

killall pode fazer isso.

$ killall application_name
    
por 13.10.2016 / 02:53