web-dev-qa-db-fra.com

Comment tuer tous les processus avec un prénom?

J'exécute la commande ps -A | grep <application_name> et obtenir la liste des processus comme celui-ci:

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

Je veux tuer tous les processus de la liste: 19440, 21630, 22694.

J'ai essayé ps -A | grep <application_name> | xargs kill -9 $1 mais cela fonctionne avec des erreurs.

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

Comment puis-je le faire gracieusement?

17
pkill -f <application_na>

Tue tous les processus qui contiennent le modèle <application_na> en leurs noms.

man pkill

26
Katu

Le problème est que ps -A | grep <application_name> | xargs -n1 renvoie une sortie comme celle-ci

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

Vous pouvez utiliser awk pour obtenir d'abord une colonne de ps sortie.

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

Renvoie la liste des PID

19440
21630
22694

Et en ajoutant kill -9 $1 vous avez une commande qui tue tous les PID

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

killall peut le faire.

$ killall application_name
0
rudimeier