使用python获取Unix中正在运行的进程列表的最佳方法是哪一种?
时间:2020-03-06 15:00:12 来源:igfitidea点击:
我正在努力:
import commands print commands.getoutput("ps -u 0")
但这在os x上不起作用。
os而不是命令提供了相同的输出:
用户PID%CPU%MEM VSZ RSS TT STAT启动时间命令
而已
解决方案
如果我们使用os而不是命令,它将起作用:
import os print os.system("ps -u 0")
命令的跨平台替换是子过程。请参阅子流程模块文档。 "替换较旧的模块"部分包括如何从命令获取输出。
当然,我们仍然需要针对所使用的平台将正确的参数传递给" ps"。 Python不能,尽管我偶尔会看到第三方库尝试这样做,但是它们通常只能在少数系统上运行(例如严格的SysV风格,严格的BSD风格或者仅具有以下功能的系统) / proc。)
我已经在OS X(10.5.5)上进行了尝试,并且似乎工作得很好:
print commands.getoutput("ps -u 0") UID PID TTY TIME CMD 0 1 ?? 0:01.62 /sbin/launchd 0 10 ?? 0:00.57 /usr/libexec/kextd
等等。
Python 2.5.1
这适用于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
以上任何python调用-但尝试'pgrep