How to use `subprocess` command with pipes

后端 未结 9 1457
春和景丽
春和景丽 2020-11-22 02:32

I want to use subprocess.check_output() with ps -A | grep \'process_name\'. I tried various solutions but so far nothing worked. Can someone guide

9条回答
  •  花落未央
    2020-11-22 02:51

    To use a pipe with the subprocess module, you have to pass shell=True.

    However, this isn't really advisable for various reasons, not least of which is security. Instead, create the ps and grep processes separately, and pipe the output from one into the other, like so:

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

    In your particular case, however, the simple solution is to call subprocess.check_output(('ps', '-A')) and then str.find on the output.

提交回复
热议问题