Pokaż pięć najlepszych procesów wykorzystujących procesor za pomocą `ps`

101

Jak pokazać pięć najlepszych procesów wykorzystujących procesor za pomocą ps?

PlanasB
źródło

Odpowiedzi:

95

psPo co korzystać, skoro można to łatwo zrobić za pomocą toppolecenia?

Jeśli musisz użyć ps, spróbuj tego:

ps aux | sort -nrk 3,3 | head -n 5

Jeśli chcesz czegoś, co jest naprawdę „topowe” z ciągłymi aktualizacjami, użyj zegarka

watch "ps aux | sort -nrk 3,3 | head -n 5"
Boban P.
źródło
3
ps aux | sortuj -k 3,3 | tail -n 5 ;-)
PlanasB
1
dobrze będzie dołączyć sortowanie numeryczne, aby pominąć nagłówek ps aux. ps aux | sort -nrk 3,3 | head -n 5
syss
1
powoduje to wiele procesów, które zużywają więcej zasobów, a także są bardziej podatne na warunki rasowe, ponieważ kiedy dane
potokowe trafiają
To prawda @ LưuVĩnhPhúc, ale zastanawiam się, jak to się różni od tego, jak topfaktycznie działa.
icedwater
1
@icedwater topczyta listę procesów i wyświetla wynik samodzielnie, bez
podłączania
87

Prawidłowa odpowiedź to :

ps --sort=-pcpu | head -n 6

Możesz więc określać kolumny bez zakłócania sortowania.

Dawny:

ps -Ao user,uid,comm,pid,pcpu,tty --sort=-pcpu | head -n 6

Uwaga dla systemu Mac OS X : w systemie Mac OS X psnie rozpoznaje --sort, ale oferuje -rsortowanie według bieżącego użycia procesora. Dlatego w systemie Mac OS X można użyć:

ps -Ao user,uid,comm,pid,pcpu,tty -r | head -n 6
Facundo Victor
źródło
3
To jest poprawna odpowiedź. Dziękuję Facundo. Próbowałem wytłumaczyć innym, że możesz użyć sortowania i potokowania, ale ps również jest wbudowany z opcją sortowania i teraz widzę, że używasz go również, co jest świetne.
Luis Alvarado,
Drugie polecenie wydaje się bardziej przydatne ... ale pierwsze wydaje się po prostu pokazywać bash(x2, albo headteż) ps...
Wilf
3
@ Wilf Pierwszy służy do podświetlenia sposobu sortowania według zużycia procesora bez użycia polecenia sort, drugi pokazuje, jak określić kolumny bez zakłócania sortowania. Wyjaśniając coś ... zawsze lepiej jest być zwięzłym i wyjaśniać jedną rzecz na raz.
Facundo Victor
27

W zależności od potrzeb może być to nieco bardziej czytelne:

ps -eo pcpu,pid,user,args --no-headers| sort -t. -nk1,2 -k4,4 -r |head -n 5

próbka wyjściowa:

 1.3     4 root     [ksoftirqd/0]
 1.1     9 root     [ksoftirqd/1]
 1.0 17606 nobody   /usr/sbin/gmetad
 1.0    13 root     [ksoftirqd/2]
 0.3 17401 nobody   /usr/sbin/gmond

(pola to% CPU, PID, USER, COMMAND)

Ryan Horrisberger
źródło
22

Nie sądzę, że pstego szukasz. Czy spojrzałeś na wynik z top?

Jeśli masz GNU-Top, spróbuj użyć jego trybu wsadowego, aby wyrzucić listę procesów posortowaną według użycia procesora i używając head / tail, aby uzyskać 5 pierwszych linii (pierwsze 8 to nagłówki):

top -b -n 1 | head -n 12  | tail -n 5

Top BSD wydaje się zachowywać inaczej i nie ma trybu nieinteraktywnego, więc użyj jednego z innych psopartych na nim rozwiązań.

Caleb
źródło
1
W OS X jest top -o cpu -n 5sposobem na osiągnięcie tego samego. Czy ktoś wie? Mój topróżni się od twojego top.
boehj
Jesteś tym z innym topem, więc możesz powiedzieć. Mój top nie ma -oi -nustawia, ile razy odświeża wyświetlacz przed zamknięciem.
Caleb
Słusznie. Wrócę dziś po południu na Linux-a i spojrzę. Mój topwydaje się nie mieć trybu wsadowego, co jest dość ograniczające. Musi istnieć jakiś sposób przesyłania topdo innych poleceń. Zrobię trochę badań.
boehj
Wspominałem o przełączniku trybu wsadowego w mojej odpowiedzi, ale tak naprawdę nie jest to konieczne dla mojej góry, ponieważ automatycznie wykrywa bycie częścią potoku zamiast sesji interaktywnej. Czy próbowałeś to zrobić bez tego?
Caleb
1
Zrobi. GNU topdziałało zgodnie z opisem dzisiejszego popołudnia. Twoje zdrowie.
boehj
6

Najszybszy jeden linijka, jaki znalazłem do tego (uwaga 6, ponieważ sumuje się nagłówek):

ps aux k-pcpu | head -6
Nestor Urquiza
źródło
5

Zauważ, że obecne wersje ps mają w sobie zdolność sortowania, w oparciu o kody pól (podane na stronie ps ps). Kod pola dla użycia procesora to „c”. Możesz użyć --sort cna końcu polecenia ps, npps aux --sort c

Spowoduje to umieszczenie procesu przy użyciu największej liczby procesorów na dole listy. Odwróć kolejność listy, dodając minus do kodu pola używanego do sortowania npps aux --sort -c

Cian D.
źródło
4

Aby dodać punkt do innych cennych odpowiedzi, wolę:

ps auxk-c | head -6

Drukuje również nagłówek, co jest miłe.

Tutaj kjest identyczne --sorti cokreśla pole użycia procesora (alias %cpu) do sortowania, podczas gdy -do sortowania wstecznego.

Możesz dodać więcej specyfikatorów oddzielone ,, inne możliwe Specyfikatory to: %mem, args, bsdstart, pid, gid, uid..., które można znaleźć pełną listę w STANDARD SPECYFIKATORY FORMAT sekcji strony człowieka. Na przykład:

 ps auxk -gid,-%mem | head -11

wypisuje 10 procesów o najwyższym identyfikatorze grupy, wewnętrznie posortowanych według zużycia pamięci.

2i3r
źródło
3

Narzędzie wiersza polecenia psma własną opcję sortowania, więc wolę:

$ ps -eo pcpu,args --sort=-%cpu | head

Możesz dodać kolumny, które chcesz. Zobacz, jakie inne opcje są dostępne na psstronie podręcznika .

$ man ps
Christopher James Morton
źródło
0

topw systemie Mac OS X ma opcję trybu rejestrowania w postaci top -l numberOfSamples(która wydaje się być odpowiednikiem trybu wsadowego GNU top). Konieczne jest jednak posiadanie co najmniej dwóch próbek, ponieważ „pierwsza wyświetlana próbka będzie wyświetlać nieprawidłowy% CPU dla każdego procesu, ponieważ jest obliczana z wykorzystaniem delty między próbkami” ( man 1 top).

# examples
top -o cpu -l 2 -n 5 | tail -n 6
top -o cpu -l 2 -n 5 -stats pid,command,cpu | tail -n 6
top -o cpu -l 2 -n 5 -stats pid,command,cpu -U $(logname) | tail -n 6
ulf
źródło
0

topwyświetli, co korzysta z twojego procesora. Jeśli jest zainstalowany, htopumożliwia bardziej szczegółową kontrolę, w tym filtrowanie według - w twoim przypadku - procesora.

PSN
źródło
0

Uważam, że najprostszym sposobem na sprawdzenie zużycia 5 najlepszych procesorów jest:

ps -eo pid,comm,%cpu,%mem --sort=-%cpu | head -n 5

Aby zobaczyć 5 największych procesów zajmujących pamięć , należy:

ps -eo pid,comm,%cpu,%mem --sort=-%mem | head -n 5

Gdzie,

-e : Ta flaga służy do wybierania całego procesu

-o : Ta flaga służy do formatowania zdefiniowanego przez użytkownika.

pid : Ten argument służy do wyświetlania pid

comm: Ten argument służy wyłącznie do wyświetlania nazwy polecenia. Aby uzyskać pełne wykorzystanie polecenia args, cmdlubcommand

%cpu: Ten argument pokazuje procent wykorzystania procesora przez proces w formacie „##. #”. Tutaj pcpumożna również użyć.

%mem: Ten argument pokazuje stosunek wielkości zestawu rezydentnego procesu do pamięci fizycznej na komputerze, wyrażony w procentach. Tutaj pmemmożna również użyć.

--sort: Określ kolejność sortowania. Po znak jest używany do sortowania najwyższą wartość na górze, gdzie jest opcja domyślna, która jest do listy rosnące numerycznej [czyli 0 do n].=-+

Mahomet
źródło
-2

top -bn1 |sed -n '7,12'pdziała również jako miły mały wkładka.
Chociaż wolę używać ps z --sort = X -o X, Y, Z

za pomocą ps możesz pobrać różne statystyki grep dla procesu LUB użytkownika, a następnie sumować LUB ściąć je za pomocą potoku do przebudzenia.

jshedler
źródło