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


当前回答

你可以尝试sh.py中的管道功能:

import sh
print sh.grep(sh.ps("-ax"), "process_name")

其他回答

使用来自subprocess.run的输入,您可以将一个命令的输出传递给第二个命令。

import subprocess
    
ps = subprocess.run(['ps', '-A'], check=True, capture_output=True)
processNames = subprocess.run(['grep', 'process_name'],
                              input=ps.stdout, capture_output=True)
print(processNames.stdout.decode('utf-8').strip())
command = "ps -A | grep 'process_name'"
output = subprocess.check_output(["bash", "-c", command])

此外,尝试使用'pgrep'命令而不是'ps -A | grep' process_name'

你可以尝试sh.py中的管道功能:

import sh
print sh.grep(sh.ps("-ax"), "process_name")

或者始终可以在子进程对象上使用communication方法。

cmd = "ps -A|grep 'process_name'"
ps = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
output = ps.communicate()[0]
print(output)

communication方法返回一个由标准输出和标准错误组成的元组。