Tuer les processus par nom?
Je suis en train d'essayer de tuer un processus (plus précisément iChat). Sur la ligne de commande, j'ai utiliser ces commandes:
ps -A | grep iChat
Alors:
kill -9 PID
Cependant, je ne suis pas exactement sûr de savoir comment traduire ces commandes sur Python.
Vous devez vous connecter pour publier un commentaire.
En supposant que vous êtes sur un Unix-like plate-forme (de sorte que
ps -A
existe),vous donne
ps -A
's de sortie dans leout
variable (une chaîne). Vous pouvez le décomposer en lignes et en boucle sur eux...:(vous pourriez éviter l'importation de
signal
, et l'utilisation9
au lieu designal.SIGKILL
, mais je n'aime pas particulièrement ce style, donc j'aurais plutôt utilisé la constante nommée de cette façon).Bien sûr, vous pourriez faire beaucoup plus sophistiqués de traitement sur ces lignes, mais ce n'imite ce que vous faites dans le shell.
Si ce que vous êtes après, c'est éviter d'
ps
, c'est difficile à faire à travers les différents systèmes de type Unix (ps
est leur API commune pour obtenir une liste des processus, en un sens). Mais si vous avez un spécifique de système de type Unix à l'esprit, seulement (ne nécessitant pas une croix-plate-forme de portabilité), il peut être possible; en particulier, sur Linux, le/proc
pseudo-système de fichiers est très utile. Mais vous aurez besoin de clarifier exactement à vos exigences avant de pouvoir nous aider sur cette dernière partie.psutil peut trouver des processus par nom et de le tuer:
psutil
paquet, qui peut ne pas être présent sur la machine cible.Si vous avez à considérer le cas de Windows afin d'être multi-plateforme, essayez les solutions suivantes:
Si vous avez killall:
Ou:
pkill
, bien que je pense que je suis la seule personne dans le monde qui l'utilise à la place dekillall
killall java
?pkill
parce que la seulekillall
j'étais au courant de la "tuer tout ce qui" un.cela a fonctionné pour moi sous windows 7
Le code ci-dessous va tuer tous les iChat orientée sur des programmes:
Vous pouvez utiliser
pkill <process_name>
dans un système unix pour tuer les processus par nom.Puis le code python sera:
Pour moi, la seule chose qui a fonctionné est l'été:
Par exemple
Si vous voulez tuer le processus(es) ou cmd.exe porteur d'un titre particulier(s).
Espère que cela aide. Il pourrait y avoir de nombreux de meilleures solutions pour la mine.
vous pouvez l'essayer..
avant de vous installer psutil à l'aide de
sudo pip install psutil
vous pouvez utiliser WMI module pour ce faire sur windows, mais c'est beaucoup moins agiles que vous unix gens sont utilisés pour l';
import WMI
prend du temps et il y a des intermédiaires de la douleur pour se rendre au processus.9 représente le signal SIGKILL. Ainsi, vous pouvez utiliser
KILL
en place de 90r
vous pouvez les mêmes commandes à partir de python comme ce
Mais votre commande à obtenir le pid a besoin d'un peu de travail, mais (ne peut pas simplement supposer que juste parce qu'il a iChat que c'est vraiment iChat), vous devez utiliser la commande killall plutôt comme suggéré par Matthieu Flaschen