orurowanie w powłoce za pomocą modułu podprocesów Pythona
Próbuję więc wyszukać trzy „intensywne” procesy CPU na danej maszynie i znalazłem to polecenie powłoki:ps -eo pcpu,pid,user,args | sort -k 1 -r | head -3
Chcę użyć tych danych w skrypcie Pythona, więc muszę być w stanie przechwycić dane wyjściowe powyższego polecenia przezsubprocess
moduł. Poniższe działa, ale zwraca ogromny ciąg, ponieważ nie ograniczam go do pierwszej 3:
psResult = subprocess.check_output(['ps', '-eo', 'pcpu,user,args'])
Nie jestem pewien, jak to jestsubprocess.check_output
działa .. w skromnej próbie próbowałem:
subprocess.check_output(['ps', '-eo', 'pcpu,user,args', '|', 'sort', '-k', '1', '-r', '|', 'head', '-3'])
Co daje mi błąd:ps: illegal argument: |
Jak korzystać z rury|
symbol w Pythonie lub użyj innego sposobu na sortowanie bez konieczności wykonywania niesamowitych ilości parsowania na wielkim łańcuchu zwróconympsResult = subprocess.check_output(['ps', '-eo', 'pcpu,user,args'])
?
Dzięki! Pozdrawiam, -kstruct