我如何才能在Python进程列表?(how do I get the process list in

2019-06-25 06:16发布

我如何从Python中的所有正在运行的进程的进程列表,在Unix上,包含然后命名命令/过程和进程的ID,这样我就可以过滤和终止进程。

Answer 1:

在Linux上,最简单的解决办法可能是使用外部ps命令:

>>> 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')]]

在其他系统上,你可能需要更改的选项ps

不过,你可能需要运行manpgreppkill



Answer 2:

在Linux中,与适当最近的Python其中包括subprocess模块:

from subprocess import Popen, PIPE

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

您可能需要调整ps命令略有不同您的具体需求。



Answer 3:

在Python正确的便携式解决方案是使用psutil 。 你有不同的API与PID的互动:

>>> 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()

...如果你想“查杀”:

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


Answer 4:

为什么Python的?
您可以直接使用killall进程名称。



文章来源: how do I get the process list in Python?