Como otros han dicho, la mejor manera es probablemente top
. Necesita un pequeño ajuste y un poco de análisis, pero puede obtenerlo para darle el uso actual de la CPU como porcentaje.
top
divide el uso de la CPU entre el usuario, los procesos del sistema y los nice
procesos, queremos la suma de los tres. Por lo tanto, podemos ejecutar top
en b
modo atch que nos permite analizar su salida. Sin embargo, como se explica aquí , la primera iteración de top -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 el d
elay entre iteraciones en 0.01
. Finalmente, usted grep
usa la línea que contiene los porcentajes de CPU y luego la usa gawk
para sumar usuarios, sistemas y procesos agradables:
top -bn 2 -d 0.01 | grep '^%Cpu' | tail -n 1 | gawk '{print $2+$4+$6}'
----- ------ ----------- --------- ----------------------
| | | | |------> add the values
| | | |--> keep only the 2nd iteration
| | |----------------> keep only the CPU use lines
| |----------------------------> set the delay between runs
|-----------------------------------> run twice in batch mode
Pensé que también podría obtener esta información ps -o pcpu ax
agregando el% de uso de cada proceso en ejecución. Desafortunadamente, como se explica aquí , ps
"devuelve el porcentaje de tiempo dedicado a la ejecución durante toda la vida útil de un proceso", que no es lo que necesita.
EDITAR
Según su comentario, su versión de top
es diferente a la mía y debería usar esto en su lugar:
top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'
Y, para evitar problemas con la localización, configure la configuración regional en C:
LC_ALL=C top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'