Comment puis-je tuer un processus par son nom?

44

Parfois, je remarque que le processus a été Pythonsuspendu. Ensuite, je vais le tuer via le moniteur d'activité et tout va bien.

Je voudrais plutôt tuer ce processus dans le terminal. Cependant, la recherche PIDsemble inutile car il n’ya qu’un seul processus Python.

Est-il possible de tuer un processus par son nom unique?

Gentmatt
la source

Réponses:

52

Vous devriez pouvoir exécuter la commande sudo killall Python.

Vous devez exécuter en tant que root car Python appartient à root et non à l'utilisateur.

Matt Love
la source
J'ai fait ça:No matching processes belonging to you were found
gentmatt
1
Le processus Python n'appartient pas à votre utilisateur. Essayez en tant que root au lieu: sudo killall Python.
HenningJ
1
@ HenningJ Sudo a travaillé pour une raison quelconque. Je viens de voir que le processus m'appartient. Je pourrais tuer le processus sans sudoquand je l'ai tué en utilisant c'est PID. Pourquoi?
Gentmatt
1
Je pense que c'est parce que l'utilisation d'un PID n'est pas spécifique à l'utilisateur / à la racine, alors qu'un nom de processus l'est. Je vais modifier cette réponse pour réfléchir sudo.
Matt Love
Cela a également fonctionné pour plusieurs processus portant le même nom, nice
chrismarx
21
sudo killall -s SIGINT "process name"

Si vous ne pouvez pas être un sudo car il vous demandera un mot de passe et je sens que vous ne le voulez pas dans un script. pkill viens au secours :)

pkill -9 "process name"
Roshan Mehta
la source
5

Vous pouvez tuer des applications en utilisant Activity Monitor.app, en tant que solution graphique. Ce serait une simple "force quitter". Cependant, cela ne fonctionne pas toujours pour différentes raisons dans certaines situations!

La solution de ligne de commande mentionnée dans le commentaire ci-dessus contient beaucoup plus d'options pour l'utilisateur. sudo killall Pythonou s'il s'agit d'un processus de programme en cours, il sudo killall /Applications/Whatever.appoblige également le processus à quitter.

Vous pouvez également forcer un processus à quitter, en utilisant son PID attribué . Dans le cas de Activity Monitor.app, ce serait kill 25794oukill -9 25794

entrez la description de l'image ici

Quelques détails supplémentaires:

Le programme kill de Terminal force simplement la fermeture d'un programme, comme par télécommande. (Cela fonctionne même lorsque vous utilisez SSH sur votre Mac depuis un emplacement distant. Suivez la commande kill avec le numéro d'identification du processus (PID court) du programme que vous souhaitez arrêter.

À moins que vous n'utilisiez également sudo, vous ne pouvez tuer que les programmes que vous «possédez» - ceux qui fonctionnent sous votre compte. (Le système d'exploitation lui-même - root - exécute toujours ses propres programmes, et il est techniquement possible que d'autres personnes, se connectant depuis la route, exécutent leurs propres programmes même lorsque vous utilisez un Mac!)

Le -9drapeau est une "tuer non capturable, non ignorable." En d'autres termes, c'est un assassin de force industrielle qui n'accepte aucune demande de clémence du programme que vous tuez.

v2r
la source
5

Bien qu'il n'utilise PID, je trouve ce qui suit pour être assez efficace:

ps aux | grep "String or name of process"

Cette ligne renvoie une foule d'informations sur le (s) processus de correspondance, et vous pouvez à killpartir de là.

soxman
la source
2
pkill -f "process name"

Basé sur https://stackoverflow.com/a/22334807/1243763

Samir
la source
1
Existe-t-il un pidof sur macOS? Et pourquoi ne pas utiliser pkill qui n’a pas le problème du processus supplémentaire?
nohillside
d'accord et j'ai raté ça. J'avais pidofbinaire comme alias non standard de ps -e -o pid,args | grep -E "\b$1\b" | awk "{print \$1}" | tr '\n' ' '. Donc, pkill -fcela a plus de sens.
Samir