So I'm trying to query for the top 3 CPU "intensive" processes on a given machine, and I found this shell command to do it: ps -eo pcpu,pid,user,args | sort -k 1 -r | head -3
I want to use this data inside a Python script, so I need to be able to capture the output of the above command via the subprocess
module. The following works, but just returns a huge string since I'm not restricting it to the top 3:
psResult = subprocess.check_output(['ps', '-eo', 'pcpu,user,args'])
I'm not quite sure how this subprocess.check_output
works.. in a meager attempt I tried:
subprocess.check_output(['ps', '-eo', 'pcpu,user,args', '|', 'sort', '-k', '1', '-r', '|', 'head', '-3'])
Which gives me an error: ps: illegal argument: |
How do I use the pipe |
symbol inside Python, or use some other way to do the sorting without having to do incredible amounts of parsing on the huge string returned by psResult = subprocess.check_output(['ps', '-eo', 'pcpu,user,args'])
?
Thanks!
Regards,
-kstruct
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…