desenv-web-rp.com

Como matar todo o processo com nome próprio?

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

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

Eu quero matar todo o processo 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 normalmente?

17
Łukasz D. Tulikowski
pkill -f <application_na>

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

man pkill

26
Katu

O problema é que ps -A | grep <application_name> | xargs -n1 retorna uma 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

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
11
Łukasz D. Tulikowski

killall pode fazer isso.

$ killall application_name
0
rudimeier