Question

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

Was it helpful?

Solution

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.

OTHER TIPS

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
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top