如何在Unix或Linux中使用Python获取程序的进程ID?
我正在用Python写一些监控脚本,想找个最简单的方法来获取任何正在运行的程序的进程ID,只要知道这个程序的名字就行。
就像这样:
ps -ef | grep MyProgram
我可以解析这个输出,不过我觉得在Python里可能有更好的方法。
9 个回答
24
如果你不只使用标准库的话,我推荐用 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}]
304
这是来自标准库的内容,具体可以查看这个链接。
os.getpid()
15
试试 pgrep
。它的输出格式简单得多,所以更容易处理。