tubulação no shell via módulo de subprocesso Python
Então, estou tentando consultar os 3 principais processos "intensivos" de CPU em uma determinada máquina, e encontrei este comando shell para fazer isso:ps -eo pcpu,pid,user,args | sort -k 1 -r | head -3
Eu quero usar esses dados dentro de um script Python, então eu preciso ser capaz de capturar a saída do comando acima através dosubprocess
módulo. O seguinte funciona, mas apenas retorna uma string enorme, já que não estou restringindo-a ao top 3:
psResult = subprocess.check_output(['ps', '-eo', 'pcpu,user,args'])
Eu não tenho certeza de como issosubprocess.check_output
funciona .. em uma tentativa escassa eu tentei:
subprocess.check_output(['ps', '-eo', 'pcpu,user,args', '|', 'sort', '-k', '1', '-r', '|', 'head', '-3'])
O que me dá um erro:ps: illegal argument: |
Como eu uso o tubo?|
símbolo dentro do Python, ou use alguma outra maneira de fazer a ordenação sem ter que fazer uma quantidade incrível de análise na grande corda retornada porpsResult = subprocess.check_output(['ps', '-eo', 'pcpu,user,args'])
?
Obrigado! Atenciosamente, -struct