python子进程中的子shell

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python子进程中的子shell相关的知识,希望对你有一定的参考价值。

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

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

使用子进程我试图使用https://stackoverflow.com/a/29755431/1355628中的函数拆分命令

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

谢谢你的提前

答案

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(...)

以上是关于python子进程中的子shell的主要内容,如果未能解决你的问题,请参考以下文章

python子进程中的子shell

views.py 中的子进程不起作用

通过不使用通信的子进程捕获输出

使用 asyncio 将 bash 作为 Python 的子进程运行,但 bash 提示被延迟

Python编写守护进程程序

杀死运行系统 shell 命令的子进程