python子进程中的子shell

时间:2017-12-29 14:37:34

标签: python bash subprocess

在python脚本中,我需要启动一个命令,如

kill $(ps aux | grep httpd | awk '{print $2}')

使用子流程 我试图使用https://stackoverflow.com/a/29755431/1355628

中的函数拆分命令

使用管道的简单命令功能很好但不幸的是上面的那个似乎不起作用(返回代码似乎是完全随机的......)

谢谢是提前

1 个答案:

答案 0 :(得分:4)

subprocess.run采用可选的shell=True参数,该参数将在子shell中运行您的命令。 但是,如果您正在处理用户输入,请阅读Security Considerations

另一个(更好的,imo)解决方案是使用psutil包和os.kill,如下所示:

import psutil
processes = [p for p in psutil.pids() if 'httpd' in psutil.Process(p).name()]
for process in processes:
    os.kill(...)