2

Ниже приведен пример команды оболочки, которую я хотел бы выполнить дословно. Любой способ сделать это в python (т. Е. Аналогично конструкции% x {command} в ruby, которая будет принимать все, что вы ей дадите).

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

Хитрость здесь в том, что он имеет цепные трубы - так что это не очень хорошо, например, с popen.

2 ответа2

9

Эта команда нуждается в функциях оболочки, включая подстановку команд и каналы, поэтому вы должны использовать shell=True в вызове subprocess.call() . Он должен работать нормально, пока вы запускаете его в оболочке. Так:

from subprocess import call

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

пытаться:

import os
os.system(yourcommandshere)

Имейте в виду, что для переносимости вы должны правильно определить, на какой ОС вы работаете.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .