当前位置:  开发笔记 > 编程语言 > 正文

哪个是使用python在unix中获取正在运行的进程列表的最佳方法?

如何解决《哪个是使用python在unix中获取正在运行的进程列表的最佳方法?》经验,为你挑选了3个好方法。

我尝试着:

import commands
print commands.getoutput("ps -u 0")

但它不适用于os x.os而不是命令给出相同的输出:USER PID%CPU%MEM VSZ RSS TT STAT STARTED TIME COMMAND

而已



1> S.Lott..:

这适用于Mac OS X 10.5.5.注意大写-U选项.也许那是你的问题.

import subprocess
ps = subprocess.Popen("ps -U 0", shell=True, stdout=subprocess.PIPE)
print ps.stdout.read()
ps.stdout.close()
ps.wait()

这是Python版本

Python 2.5.2 (r252:60911, Feb 22 2008, 07:57:53) 
[GCC 4.0.1 (Apple Computer, Inc. build 5363)] on darwin



2> Giampaolo Ro..:

如果操作系统支持/ proc fs,你可以这样做:

>>> import os
>>> pids = [int(x) for x in os.listdir('/proc') if x.isdigit()]
>>> pids
[1, 2, 3, 6, 7, 9, 11, 12, 13, 15, ... 9406, 9414, 9428, 9444]
>>>

跨平台解决方案(linux,freebsd,osx,windows)是使用psutil:

>>> import psutil
>>> psutil.pids()
[1, 2, 3, 6, 7, 9, 11, 12, 13, 15, ... 9406, 9414, 9428, 9444]    
>>>



3> Thomas Woute..:

跨平台的替代品commandssubprocess.请参阅子进程模块文档."替换旧模块"部分包括如何从命令获取输出.

当然,你仍然需要为你所在的平台传递正确的参数'ps'.Python无法帮助你,虽然我偶尔会看到试图这样做的第三方库,但它们通常只适用于少数几个系统(如严格的SysV风格,严格的BSD风格,或只是/ proc中.)

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有