如何使用Python获取Unix或Linux中程序的进程ID?

Jam*_*mes 69 python

我正在用Python编写一些监控脚本,我试图找到最简洁的方法来获取任何随机运行程序的进程ID,并给出该程序的名称

就像是

ps -ef | grep MyProgram
Run Code Online (Sandbox Code Playgroud)

我可以解析它的输出,但我认为在python中可能有更好的方法

Der*_*ley 288

从标准库:

os.getpid()
Run Code Online (Sandbox Code Playgroud)

  • 然而,这是问题标题的一个非常好的答案 (88认同)
  • 这得到了python进程的pid而不是用户所要求的 (26认同)
  • 是的,它让我得到了我来这里的意义. (20认同)

Mar*_*ark 19

如果您不限制自己使用标准库,我喜欢psutil.

例如,找到所有"python"进程:

>>> import psutil
>>> [p.info for p in psutil.process_iter(attrs=['pid', 'name']) if 'python' in p.info['name']]
[{'name': 'python3', 'pid': 21947},
 {'name': 'python', 'pid': 23835}]
Run Code Online (Sandbox Code Playgroud)


lun*_*orn 13

试试pgrep.它的输出格式更简单,因此更容易解析.


Dev*_*yer 7

另外: Python:如何通过进程名称获取PID?

适应以前发布的答案.

def getpid(process_name):
    import os
    return [item.split()[1] for item in os.popen('tasklist').read().splitlines()[4:] if process_name in item.split()]

getpid('cmd.exe')
['6560', '3244', '9024', '4828']
Run Code Online (Sandbox Code Playgroud)