2 votes

Comment exécuter un ensemble enchaîné de commandes linux depuis Python ?

Voici un exemple d'une commande Shell que j'aimerais exécuter mot pour mot. Y a-t-il un moyen de faire cela en Python (c'est-à-dire similaire à la construction %x{command} en ruby qui prend tout ce que vous lui donnez .

kill -9 $(ps -ef | grep java | grep TaskTracker | awk '{print $2}')

L'astuce ici est qu'il y a des tuyaux enchaînés - donc cela ne fonctionne pas bien AFAICT avec par exemple popen.

10voto

Tomasi Points 201

Cette commande a besoin des fonctionnalités de Shell, y compris la substitution de commande et les pipes, donc vous devriez utiliser shell=True dans votre subprocess.call() appel. Cela devrait fonctionner correctement tant que vous l'exécutez dans un Shell. Donc :

from subprocess import call

call("kill -9 $(ps -ef | grep java | grep TaskTracker | awk '{print $2}')",
      shell=True)

1voto

BWStearns Points 111

Essayez :

import os
os.system(yourcommandshere)

Gardez à l'esprit que pour la portabilité, vous devez identifier correctement le système d'exploitation que vous utilisez.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X