从python子流程执行shell函数

从python子流程执行shell函数,python,subprocess,sh,Python,Subprocess,Sh,我试图用一个命令杀死一个特定的进程,该命令在shell中运行良好,但在python子进程中不起作用 import subprocess subprocess.call(["kill", "$(ps | grep process | awk '{ print $1}' | head -n1)"], shell=False) 解决方法是将此命令放入shell脚本并运行shell脚本。 是否可以直接从python子流程执行 import subprocess

我试图用一个命令杀死一个特定的进程,该命令在shell中运行良好,但在python子进程中不起作用

import subprocess
subprocess.call(["kill", "$(ps | grep process | awk '{ print $1}' | head -n1)"], shell=False)
解决方法是将此命令放入shell脚本并运行shell脚本。 是否可以直接从python子流程执行

import subprocess

subprocess.Popen("kill $(ps | grep ncat | awk '{print $1}' | head -n1)", shell=True)
在您的示例中,您没有从bash创建子进程,但同时使用$(…)这是bash指令。更准确地说,您创建了一个
kill
进程,并将其传递给未预计算的参数
$(…)

上面的示例创建一个bash进程,然后告诉它解释
kill$(…)
。Bash将
$(…)
转换为一个值,然后运行
kill value

在您的示例中,您没有从bash创建子进程,但同时使用$(…)这是bash指令。更准确地说,您创建了一个
kill
进程,并将其传递给未预计算的参数
$(…)


上面的示例创建一个bash进程,然后告诉它解释
kill$(…)
。Bash将
$(…)
转换为一个值,然后运行
kill value

使用
shell=True
kill$(ps | grep进程| awk'{print$1}head-n1)“
使用
pkill进程
?您所说的shell脚本是什么意思?@KamilCuk我不能使用pkill,因为在yocto发行版I中不可用。”have@mousetrail我尝试使用shell True,但效果不佳使用
shell=True
kill$(ps | grep process | awk'{print$1}'| head-n1)“
使用
pkill进程
?您所说的shell脚本是什么意思?@KamilCuk我不能使用pkill,因为在yocto发行版I中不可用。”have@mousetrail我尝试了shell True,但它没有更好地工作,只有一个“但是”,但是
/bin/sh
不一定是bash。是的,只有一个“但是”,但是
/bin/sh
不一定是bash。它可能是另一个伯恩壳牌公司。