Comment obtenir une liste de processus de tous les processus d'exécution de Python, sur UNIX, contenant alors le nom de la commande / processus de processus et de processus, afin que je puisse filtrer et tuer des processus. p>
4 Réponses :
pourquoi python?
Vous pouvez directement utiliser killall code>
sur le nom du processus. p>
il a dit qu'il filtrerait puis tuerait
Bonne observation, mais pourquoi filtrer la sortie PS code> pour le nom de la commande, recueillez les valeurs d'identité de processus, puis tuez, lorsque le
killall code> est-ce que vous?
Parce que j'ai besoin de faire correspondre les processus avec d'autres données.
Je tiens à retenir cette réponse car elle met en évidence la nécessité d'une solution ithin-python. La question n'a pas besoin de la partie code> kill code>; Il peut s'agir simplement, Comment puis-je obtenir la liste de processus en python? code>
sur Linux, la solution la plus facile est probablement d'utiliser la commande externe sur d'autres systèmes, vous devrez peut-être modifier les options sur toujours, vous voudrez peut-être exécuter PS code> PS:
PS code>. p>
man code> sur
pgrep code> et
pkill code>. P > p>
pgrep / pcill ressemble à une bonne solution pour ce dont j'ai besoin (au moins cette fois). J'ai toujours manqué une fonction PS intégrée à Python, donc cela fait partie de la raison pour laquelle j'ai posté cette question. Acclamations
OS.Popen est obsolète. Utilisez le module de sous-processus.
Hein, c'est intéressant. Il vaut la peine de poser une question: Stackoverflow.com/questions/1098257
sur Linux, avec un python dûment récent qui comprend le module code> sous-processus code>: Vous devrez peut-être modifier légèrement la commande PS en fonction de vos besoins exacts. p> p>
La solution portable droite à Python utilise Psutil . Vous avez des API différentes pour interagir avec PIDS:
for p in psutil.process_iter(): if 'nginx' in p.name() or 'nginx' in ' '.join(p.cmdline()): p.terminate() p.wait()
Vous filtrez-vous pour quelque chose de spécifique dans le nom de processus? ou simplement filtrer pour les ID de processus correspondant au nom du processus?
J'ai besoin de faire correspondre une certaine session de streaming au serveur de streaming Darwin qui n'a pas d'auditeurs actuels, le processus fournissant le flux. Quelqu'un a mentionné PGREP / PKILL qui serait également utile, mais je pense que je vais utiliser krawyoti et do os.kill de Python, je suis tout simplement plus confortable d'écrire du code Python puis à l'aide de commandes Shell.