I am using python 2.7 on mac osx 10.9.
I want to check whether, a process is running or not. I looked into this Q&A, but result is not desired.
I want to check, whether any process of a particular name is running or not
Try this. If it returns a process id then you have the process running. Use your process name instead of firefox
.
# Python2
import commands
commands.getoutput('pgrep firefox')
As commands module is no longer in python 3x, We can receive the process id using subprocess
module here.
# Python3
import subprocess
process = subprocess.Popen('pgrep firefox', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
my_pid, err = process.communicate()
Here my_pid
will be process id
.
Use module psutil. For example:
import psutil
# ...
if pid in psutil.get_pid_list():
print(pid, "is running")
Edit: You can get pids and names of all running processes like this:
for p in psutil.process_iter():
if p.name == 'firefox':
print("firefox is running")
break
I was just trying the above code and it did not work for me using python 2.7 Haven't tried the code on python 3. Posting the updated code, it might help someone
for p in psutil.process_iter(): # iterate through all running processes
if p.name() == 'firefox':
print("firefox is running")
break