如何在python中获取名称的进程ID

时间:2018-03-04 17:53:11

标签: python command-line process subprocess pid

我正在尝试构建一个简单的python脚本,它现在只做一件事:它在给定PID的过程中找到进程的进程ID。我在这里看了一下,发现了许多不同的资源,但没有一个非常符合我的需求。最有帮助的是this one,我已经用他们的例子来尝试取得进展。

现在我有这个:

from subprocess import check_output

def get_pid(name):
    return check_output(["pidof",name])

print(get_pid("fud"))

我正在使用sudo top在不同的终端窗口中查看我的所有进程。我在屏幕上看到一个特别命名为“fud”的进程并知道它正在运行。当我运行该流程和任何其他流程的程序时,我得到了这个:

  File "fort.py", line 6, in <module>
    print(get_pid("fud"))
  File "fort.py", line 4, in get_pid
    return check_output(["pidof",name])
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 566, in check_output
    process = Popen(stdout=PIPE, *popenargs, **kwargs)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 710, in __init__
    errread, errwrite)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1335, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory

我不确定这里发生了什么,并且想要有效地纠正这个错误并做我想做的事情的详细指导。谢谢!

2 个答案:

答案 0 :(得分:0)

我已经找到了解决方案。这很简单:

print(commands.getoutput(&#39; pgrep FortniteClient-Mac-Shipping&#39;))

希望有人可以使用这一天。谢谢。

答案 1 :(得分:0)

您可以使用psutil软件包:

安装

pip install psutil

用法: 为了使用进程名称获取进程ID,请参考以下代码段:

import psutil

process_name = "fud"

def get_pid(process_name):
   for proc in psutil.process_iter():
       if proc.name() == process_name:
          return proc.pid