Cuando ejecuto el siguiente comando para obtener el uso de la CPU, obtengo un buen uso de la CPU del usuario.
top -b -n1 | grep "Cpu(s)" | awk '{print $2 + $4}'
Salida:
14.5
Aquí tengo un problema es que la salida depende del comando superior, por lo que no cambia instantáneamente como comando superior. Por lo tanto, no obtengo la CPU correcta al instante. Da la misma salida y no cambia.
Quiero obtener el uso de CPU en tiempo real en la salida. Por favor, ayúdame a mejorar mi comando.
command-line
top
Ketan Patel
fuente
fuente
Respuestas:
Si puede permitirse un retraso de un segundo, esto imprimirá el uso de la CPU como un porcentaje simple:
(Sin el retraso de un segundo,
vmstat
solo puede imprimir valores promedio desde el arranque).fuente
vmstat 1 2
así: de loecho $[100-$(vmstat 1 2|tail -1|awk '{print $15}')]
contrario,vmstat
va a dar valores desde el arranque, que probablemente no sea lo que busca.Este es un problema conocido con
top
. Como se explica aquí , la primera iteración detop -b
devuelve los porcentajes desde el arranque, por lo tanto, necesitamos al menos dos iteraciones (-n 2
) para obtener el porcentaje actual. Para acelerar las cosas, puede configurar eld
elay entre iteraciones en0.01
.top
divide el uso de la CPU entre el usuario, los procesos del sistema y losnice
procesos, queremos la suma de los tres. Finalmente, ustedgrep
usa la línea que contiene los porcentajes de CPU y luego la usagawk
para sumar usuarios, sistemas y procesos agradables:fuente
top
informará el porcentaje de uso como un porcentaje de una sola CPU. Esto significa que a menudo obtendrá porcentajes mucho más altos. Ver punto 9 aquí .top
en modo interactivo (simplemente ejecutartop
) y, una vez allí, presionarI
(shift + i) para ver un desglose por núcleos.He intentado de varias maneras, pero me parece la más precisa:
Lo tengo desde aqui
fuente
%.1f
que, en mi opinión, es más legible y útil para los humanos si usa esa salida en otros scripts.Uso
-n2
. Esto generará dos líneas. La primera vez quetop
imprime la línea no califica para el estado en ese momento. Luego ajuste su script para ignorar la primera línea.fuente