【发布时间】:2012-05-11 10:35:34
【问题描述】:
所以我试图查询给定机器上的前 3 个 CPU “密集型”进程,我发现这个 shell 命令可以做到这一点:ps -eo pcpu,pid,user,args | sort -k 1 -r | head -3
我想在 Python 脚本中使用这些数据,因此我需要能够通过 subprocess 模块捕获上述命令的输出。以下工作,但只返回一个巨大的字符串,因为我没有将它限制在前 3 位:
psResult = subprocess.check_output(['ps', '-eo', 'pcpu,user,args'])
我不太确定 subprocess.check_output 是如何工作的。我尝试了一次微不足道的尝试:
subprocess.check_output(['ps', '-eo', 'pcpu,user,args', '|', 'sort', '-k', '1', '-r', '|', 'head', '-3'])
这给了我一个错误:ps: illegal argument: |
如何在 Python 中使用管道 | 符号,或者使用其他方式进行排序,而不必对 psResult = subprocess.check_output(['ps', '-eo', 'pcpu,user,args']) 返回的巨大字符串进行大量解析?
谢谢! 问候, -kstruct
【问题讨论】:
-
你可以编写一个shell脚本,其中包含你的带有管道的代码,然后从子进程模块调用它
标签: python shell subprocess pipe