Como descobrir qual processo está causando alto uso da CPU

30

Existe alguma maneira de descobrir no terminal qual processo está causando alto uso da CPU?

Também seria útil ordenar processos em ordem decrescente de uso da CPU

Gautam
fonte

Respostas:

23

topexibirá o que está usando sua CPU. Se você o tiver instalado, htoppermite um controle mais refinado, incluindo a filtragem por - no seu caso - CPU

jasonwryan
fonte
4
O topo geralmente é menos do que útil. Primeiro, porque os processos geralmente flutuam - não é incomum ver processos que ocupam completamente a CPU ocasionalmente cintilam para 0% no topo, e se você tiver vários processos intensivos em execução, eles podem alternar, revezando-se para usar 100% enquanto o outro usa 0% , dificultando a leitura. Além disso, às vezes os números são estranhos - por exemplo, no momento, meu principal relatório é de que todos os processos individuais estão usando 0% da CPU, mas o total é de 52% - então qual deles está fazendo isso?
Benubird 23/09
29
ps -eo pcpu,pid,user,args | sort -k1 -r -n | head -10

Funciona para mim, mostre os 10 principais processadores usando threads, classificados numericamente

chosig
fonte
11
Inversa lexicographically, 8% seria classificar acima de 78%
cherdt
3
Eu recomendaria adicionar um -n para classificar. Classifica os valores numericamente em vez de lexicamente. ( ss64.com/bash/sort.html )
Simon Zyx 08/11/19
4

Além dos comandos pse top, você também pode executar vmstatpara descobrir o que está acontecendo em termos de CPU, uso de memória no sistema, ou seja:

vmstat 1 100

Com o exposto, você obtém 100 amostras por segundo, além de várias estatísticas. Quando a coluna rou btem um número (maior = mais recursos usados), há um script que está bloqueando. ré CPU, bgeralmente bloqueia IO, como disco ou rede.

Exemplo de saída:

$ vmstat 1 100
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 288700  17592 1920048    0    0  4482  3297   47  155  8  2 78 12  0
 0  0      0 268420  17904 1920584    0    0   788    36 4095 4759 11  3 85  1  0
 0  0      0 269916  17940 1920868    0    0   108   560 6969 7280 11  2 86  1  1
 3  0      0 267684  18196 1921304    0    0   256     0 5934 6094  9  2 90  0  0
 0  0      0 257800  18196 1921528    0    0     0     0 5412 5508 10  1 89  0  1
 1  0      0 257368  18196 1922028    0    0     0     0 5852 6046  9  1 89  0  1
 0  0      0 256872  18200 1922236    0    0     0     0 5345 5566  9  1 90  0  0
 0  0      0 256688  18208 1922292    0    0     0  1788 5388 5602  7  2 90  1  1
 0  0      0 256520  18208 1922684    0    0     0     0 5387 5557  8  1 91  0  0
 1  0      0 255788  18208 1923024    0    0     0     0 4992 5363 10  1 89  0  1
 1  0      0 255392  18208 1923456    0    0     0     0 5027 5145 13  1 86  0  0
 0  0      0 254980  18208 1923792    0    0     0     0 5042 5082 21  1 77  0  1
 0  0      0 254452  18216 1924092    0    0     0  1848 5481 5695  7  1 91  1  1
 0  0      0 254416  18216 1924268    0    0     0     0 4947 5250  7  1 92  0  0
 1  0      0 253732  18216 1924616    0    0     0     0 5180 5383  8  2 90  0  1
 0  0      0 253584  18216 1924912    0    0    12     0 4464 4623  8  1 91  0  0
 0  0      0 243496  18216 1925224    0    0     0     0 5507 5700  9  1 90  0  1
 0  0      0 243008  18224 1925504    0    0     0  1356 5070 5345  8  1 90  0  1
 1  0      0 243220  18228 1925676    0    0     0     0 6241 6533 11  2 87  0  0
Radtek
fonte
2

Você provavelmente pode usar ps xo pid,cmd --sort=%cmd | tail -1, mas topserá exibido em tempo real.

Arcege
fonte
2

" htop " é semelhante ao topo, mas possui uma exibição "gráfica colorida baseada em texto" de suas CPUs e também exibe uma estrutura de árvore para os processos, para que você saiba que um processo tem um filho e quantos.

Ele também exibe a energia da bateria do laptop e se está carregando - eu não sabia disso antes!

KolonUK
fonte