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 me how to do it?
To use a pipe with the subprocess
module, you can pass shell=True
but be aware of the Security Considerations. It is discouraged using shell=True
. In most cases there are better solutions for the same problem.
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.