tuberías en shell a través del módulo de subproceso Python
Así que estoy tratando de consultar los 3 procesos "intensivos" de CPU en una máquina determinada, y encontré este comando de shell para hacerlo:ps -eo pcpu,pid,user,args | sort -k 1 -r | head -3
Quiero usar estos datos dentro de un script de Python, así que necesito poder capturar la salida del comando anterior a través desubprocess
módulo. Lo siguiente funciona, pero solo devuelve una cadena enorme ya que no la estoy restringiendo a los 3 principales:
psResult = subprocess.check_output(['ps', '-eo', 'pcpu,user,args'])
No estoy muy seguro de cómo estosubprocess.check_output
Funciona .. en un exiguo intento intenté:
subprocess.check_output(['ps', '-eo', 'pcpu,user,args', '|', 'sort', '-k', '1', '-r', '|', 'head', '-3'])
Lo que me da un error:ps: illegal argument: |
¿Cómo uso la tubería?|
símbolo dentro de Python, o use alguna otra forma de hacer la clasificación sin tener que hacer una cantidad increíble de análisis en la enorme cadena devuelta porpsResult = subprocess.check_output(['ps', '-eo', 'pcpu,user,args'])
?
¡Gracias! Saludos, -kstruct