Como executar um conjunto encadeado de comandos linux do python

2

A seguir, um exemplo de um comando shell que gostaria de executar na íntegra. Qualquer maneira de fazer isso em python (ou seja, semelhante à construção% x {command} no ruby que vai pegar qualquer coisa que você der a ela.

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

O truque aqui é que tem canais encadeados - então isso não funciona bem com o AFAICT, por exemplo, popen.

    
por javadba 08.05.2013 / 23:08

2 respostas

9

Esse comando precisa de recursos de shell, incluindo substituição de comandos e pipes, portanto, você deve usar shell=True na sua chamada subprocess.call() . Ele deve funcionar bem, desde que você o esteja executando em um shell. Então:

from subprocess import call

call("kill -9 $(ps -ef | grep java | grep TaskTracker | awk '{print $2}')",
      shell=True)
    
por 08.05.2013 / 23:10
1

tente:

import os
os.system(yourcommandshere)

Tenha em mente a portabilidade em que você deve identificar corretamente o SO em que você está.

    
por 08.05.2013 / 23:12

Tags