所以我试图查询给定机器上的前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'])
返回的巨大字符串进行大量的解析?
谢谢! 当做, -克斯特鲁克
如果您使用:
然后使用
/bin/sh
运行命令,这样管道就可以工作了。还有一些人建议使用
shell=True
,如果要将可信输入传递给shell,那么this answer就可以了。然而,shell=True
引入了一些不安全性。为了安全起见,docs建议如下:可以传递
shell=True
参数来执行纯shell命令:或者,使用ps和Python内置字符串函数的排序选项,如下所示:
相关问题 更多 >
编程相关推荐