Dites que je veux tuer tous les processus contenant le mot amarok. Je peux imprimer les commandes que je veux exécuter. Mais comment puis-je obliger Shell à les exécuter? c'est à dire.
ps aux | grep -ie amarok | awk '{print "kill -9 " $2}'
Output:
kill -9 3052
kill -9 3071
kill -9 3076
kill -9 3077
kill -9 3079
kill -9 3080
kill -9 3082
kill -9 3083
kill -9 3084
kill -9 3085
kill -9 3086
kill -9 3087
kill -9 3088
kill -9 3089
kill -9 4031
De man 1 pkill
-f The pattern is normally only matched against the process name.
When -f is set, the full command line is used.
Ce qui signifie, par exemple, si nous voyons ces lignes dans ps aux
:
Apache 24268 0.0 2.6 388152 27116 ? S Jun13 0:10 /usr/sbin/httpd
Apache 24272 0.0 2.6 387944 27104 ? S Jun13 0:09 /usr/sbin/httpd
Apache 24319 0.0 2.6 387884 27316 ? S Jun15 0:04 /usr/sbin/httpd
Nous pouvons tous les tuer en utilisant l'option pkill -f
:
pkill -f httpd
ps aux | grep -ie amarok | awk '{print $2}' | xargs kill -9
xargs (1): xargs - construit une liste d'arguments et exécute un utilitaire. Utile lorsque vous souhaitez canaliser des arguments vers kill
ou ls
ou autre.
utiliser pgrep
kill -9 $(pgrep amarok)
Le moyen le plus sûr de le faire est:
pkill -f amarok
Je pense que cette commande killall est exactement ce dont vous avez besoin . La commande est décrite comme "tuer les processus par leur nom". Elle est facile à utiliser.
killall chrome
Cette commande va tuer tous les processus de Chrome. Voici un lien vers la commande killall
http://linux.about.com/library/cmd/blcmdl1_killall.htm
J'espère que cette commande pourrait vous aider.
pkill -x correspond exactement au nom du processus.
pkill -x amarok
pkill -f est similaire mais permet un modèle d'expression régulière.
Notez que pkill sans autres paramètres (par exemple -x, -f) autorisera des correspondances partielles sur les noms de processus. Alors "pkill amarok" tuerait amarok, amarokBanana, bananaamarok, etc.
Je souhaite -x était le comportement par défaut!
Si vous souhaitez exécuter la sortie d'une commande, vous pouvez la placer dans $(...)
. Toutefois, pour votre tâche spécifique, jetez un coup d'œil aux commandes killall
et pkill
.
try kill -s 9 ps -ef |grep "Nov 11" |grep -v grep | awk '{print $2}'
Pour tuer les processus du 11 novembre .__ ou kill -s 9 ps -ef |grep amarok|grep -v grep | awk '{print $2}'
pour tuer les processus contenant le mot amarok
Vous pouvez également évaluer votre sortie en tant que sous-processus, en entourant tout ce qui est en arrière ou en le mettant dans $ ():
`ps aux | grep -ie amarok | awk '{print "kill -9 " $2}'`
$(ps aux | grep -ie amarok | awk '{print "kill -9 " $2}')
Peut-être que l’ajout des commandes au fichier exécutable, la définition de l’autorisation + x, puis l’exécution?
ps aux | grep -ie amarok | awk '{print "kill -9 " $2}' > pk;chmod +x pk;./pk;rm pk
Si vous utilisez cygwin ou un shell minimal dépourvu de killall
, vous pouvez utiliser ce script:
#/bin/bash
ps -W | grep "$1" | awk '{print $1}' | xargs kill -f;
$ killall <process name>