如何从 Python 执行一组链式 Linux 命令

如何从 Python 执行一组链式 Linux 命令

以下是我想要逐字执行的 shell 命令的示例。在 python 中有什么方法可以做到这一点(即类似于 ruby​​ 中的 %x{command} 构造,它将接受您提供的任何内容)。

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

这里的技巧是它有链式管道 - 所以就我所知这不能与例如 popen 很好地配合。

答案1

该命令需要 shell 功能,包括命令替换和管道,因此您应该shell=Truesubprocess.call()调用时使用。只要您在 shell 中运行它,它就应该可以正常工作。所以:

from subprocess import call

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

答案2

尝试:

import os
os.system(yourcommandshere)

请记住,为了便于移植,您应该正确识别您所使用的操作系统。

相关内容