Cómo encontrar qué proceso está causando un alto uso de CPU

30

¿Hay alguna forma de averiguar desde el terminal qué proceso está causando un alto uso de la CPU?

También sería útil ordenar procesos en orden descendente de uso de CPU

Gautama
fuente

Respuestas:

23

topmostrará lo que está usando tu CPU. Si lo tiene instalado, le htoppermite un control más detallado, incluido el filtrado por, en su caso, CPU

jasonwryan
fuente
44
Top es a menudo menos que útil. Primero, porque los procesos a menudo fluctúan: no es inusual ver que el proceso que ocupa por completo la CPU ocasionalmente parpadea al 0% en la parte superior, y si tiene múltiples procesos intensivos en ejecución, pueden alternar, turnándose para usar el 100% mientras que el otro usa el 0% , haciendo que sea difícil de leer. Además, a veces los números son simplemente extraños, por ejemplo, ahora mi parte superior informa que todos los procesos individuales están usando 0% de CPU, pero el total es 52%, ¿cuál lo está haciendo?
Benubird
29
ps -eo pcpu,pid,user,args | sort -k1 -r -n | head -10

Funciona para mí, muestra las 10 principales CPU usando hilos, ordenados numéricamente

Chosig
fuente
1
Lexicográficamente, el 8% se clasificaría por encima del 78%
cherdt
3
Recomendaría agregar un -n para ordenar. Ordena los valores numéricamente en lugar de léxicamente. ( ss64.com/bash/sort.html )
Simon Zyx
4

Además de los comandos psy top, también puede ejecutar vmstatpara averiguar qué está sucediendo en términos de CPU, uso de memoria en el sistema, es decir:

vmstat 1 100

Con lo anterior, obtienes 100 muestras por segundo de varias estadísticas. Cuando la columna ro btiene un número (mayor = más recursos utilizados) hay un script que está bloqueando. res CPU, bgeneralmente está bloqueando IO, como el disco o la red.

Salida de ejemplo:

$ 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
fuente
2

Probablemente pueda usar ps xo pid,cmd --sort=%cmd | tail -1, pero topse mostrará en tiempo real.

Arcege
fuente
2

" htop " es similar a la parte superior, pero tiene una pantalla "gráfica basada en texto colorido" de sus CPU, y también muestra una estructura de árbol para los procesos, para que sepa que un proceso tiene un hijo y cuántos.

También muestra la energía de la batería de la computadora portátil y si se está cargando, ¡no lo sabía antes!

KolonUK
fuente