一尘不染

如何在管道上使用`subprocess`命令

linux

我想搭配subprocess.check_output()使用ps -A | grep 'process_name'。我尝试了各种解决方案,但到目前为止没有任何效果。有人可以指导我怎么做吗?


阅读 247

收藏
2020-06-02

共1个答案

一尘不染

要将管道与subprocess模块一起使用,必须通过shell=True

但是,出于各种原因,这并不是真正可取的选择,其中最重要的是安全性。相反,请分别创建psgrep流程,然后将输出从一个管道输送到另一个管道,如下所示:

ps = subprocess.Popen(('ps', '-A'), stdout=subprocess.PIPE)
output = subprocess.check_output(('grep', 'process_name'), stdin=ps.stdout)
ps.wait()

但是,在您的特定情况下,简单的解决方案是先调用subprocess.check_output(('ps', '-A'))然后str.find在输出上。

2020-06-02