Skip to content Skip to sidebar Skip to footer

How Do I Get The Process List In Python?

How do I get a process list of all running processes from Python, on Unix, containing then name of the command/process and process id, so I can filter and kill processes.

Solution 1:

The right portable solution in Python is using psutil. You have different APIs to interact with PIDs:

>>>import psutil>>>psutil.pids()
[1, 2, 3, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, ..., 32498]
>>>psutil.pid_exists(32498)
True
>>>p = psutil.Process(32498)>>>p.name()
'python'
>>>p.cmdline()
['python', 'script.py']
>>>p.terminate()>>>p.wait()

...and if you want to "search and kill":

for p in psutil.process_iter():
    if 'nginx' in p.name() or 'nginx' in ' '.join(p.cmdline()):
        p.terminate()
        p.wait()

Solution 2:

On Linux, with a suitably recent Python which includes the subprocess module:

from subprocess import Popen, PIPE

process = Popen(['ps', '-eo' ,'pid,args'], stdout=PIPE, stderr=PIPE)
stdout, notused = process.communicate()
for line instdout.splitlines():
    pid, cmdline = line.split(' ', 1)
    #Do whatever filtering and processing is needed

You may need to tweak the ps command slightly depending on your exact needs.

Solution 3:

On linux, the easiest solution is probably to use the external ps command:

>>>import os>>>data = [(int(p), c) for p, c in [x.rstrip('\n').split(' ', 1) \...for x in os.popen('ps h -eo pid:1,command')]]

On other systems you might have to change the options to ps.

Still, you might want to run man on pgrep and pkill.

Solution 4:

Install psutil:

$pip install psutil

Import psutil:

>>>import psutil

Define list where process list is to be saved:

>>>processlist=list()

Append processes in list:

>>> for process in psutil.process_iter():
        processlist.append(process.name())

Get Process list:

>>>print(processlist)

Full code:

import psutil
processlist=list()
for process in psutil.process_iter():
    processlist.append(process.name())
print(processlist)

Solution 5:

Why Python? You can directly use killall on the process name.

Post a Comment for "How Do I Get The Process List In Python?"