Comment tuer tous les processus correspondant à un nom?

Disons que je veux tuer tous les processus contenant le mot amarok. Je peux imprimer les commandes que je veux exécuter. Mais comment faire pour que le shell les exécute. 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 l’ 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 l’utilitaire. Utile lorsque vous voulez insérer des arguments dans quelque chose comme kill ou ls etc.

    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 des processus par nom”. Il est facile à utiliser.Par exemple

     killall chrome 

    Cette commande va tuer tous les processus de Chrome.Voici un lien sur 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 parameters (par exemple -x, -f) autorisera des correspondances partielles sur les noms de processus. Donc, “pkill amarok” tuerait amarok, amarokBanana, bananaamarok, etc.

    Je souhaite que -x soit le comportement par défaut!

    Si vous voulez exécuter la sortie d’une commande, vous pouvez la placer dans $(...) , mais pour votre tâche spécifique, jetez un coup d’œil aux commandes killall et pkill .

    Vous pouvez également évaluer votre sortie en tant que sous-processus, en entourant tout ce qui se trouve derrière ou en le plaçant dans $ ():

     `ps aux | grep -ie amarok | awk '{print "kill -9 " $2}'` $(ps aux | grep -ie amarok | awk '{print "kill -9 " $2}') 

    essayez kill -s 9 ps -ef |grep "Nov 11" |grep -v grep | awk '{print $2}' ps -ef |grep "Nov 11" |grep -v grep | awk '{print $2}' Pour tuer les processus du 11 novembre ou tuer -s 9 ps -ef |grep amarok|grep -v grep | awk '{print $2}' ps -ef |grep amarok|grep -v grep | awk '{print $2}' Pour tuer les processus contenant le mot amarok

    Peut-être append les commandes à un fichier exécutable, en paramétrant la permission + x puis en exécutant?

     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 sans killall vous pouvez simplement utiliser ce script:

    killall.sh – Tue par nom de processus.

     #/bin/bash ps -W | grep "$1" | awk '{print $1}' | xargs kill -f; 

    Usage:

     $ killall