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.
topdivide el uso de la CPU entre el usuario, los procesos del sistema y los niceprocesos, queremos la suma de los tres. Por lo tanto, podemos ejecutar topen bmodo atch que nos permite analizar su salida. Sin embargo, como se explica aquí , la primera iteración de top -bdevuelve 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 delay entre iteraciones en 0.01. Finalmente, usted grepusa la línea que contiene los porcentajes de CPU y luego la usa gawkpara 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 axagregando 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 topes 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}'