GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cuáles son los métodos disponibles para obtener el uso de la CPU en la línea de comandos de Linux?

Como han dicho otros, la mejor manera es probablemente top . Necesita algunos ajustes y un poco de análisis, pero puede obtenerlo para obtener el uso actual de la CPU como un porcentaje.

top divide el uso de la CPU entre el usuario, los procesos del sistema y nice procesos, queremos la suma de los tres. Entonces, podemos ejecutar top en b modo de captura 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 que necesitamos al menos dos iteraciones (-n 2 ) para obtener el porcentaje actual. Para acelerar las cosas, puede configurar el d retraso entre iteraciones a 0.01 . Finalmente, grep la línea que contiene los porcentajes de CPU y luego use gawk para sumar procesos de usuario, sistema y Niza:

    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 a través de 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 al mío y deberías 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, establezca 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}'

sar es la forma definitiva de hacerlo. Entonces, por ejemplo, sar -u generará algo como esto:

08:30:01 AM       CPU     %user     %nice   %system   %iowait     %idle
08:40:01 AM       all      6.94      0.00      1.77      4.92     86.36
08:50:01 AM       all      5.73      0.00      2.31     12.72     79.24
09:00:01 AM       all      5.95      0.00      2.58     18.36     73.11
09:10:01 AM       all      6.88      0.00      2.22     17.44     73.45
09:20:01 AM       all      8.61      0.00      2.68     27.93     60.78

No dice qué Linux usa, pero para CentOS/RedHat necesita instalar el sysstat paquete, y creo que es lo mismo en Debian/Ubuntu.

También puede usar sar para recopilar estadísticas ad hoc :

sar -o /tmp/sar.out 60 600

Recopilará estadísticas cada 60 segundos 600 veces, es decir, 600 minutos.


Linux
  1. Ordenarse con ordenar en la línea de comando

  2. Usando la fuerza en la línea de comando de Linux

  3. Tener una vaca en la línea de comandos de Linux

  4. Encárguese en la línea de comandos de Linux

  5. Haga más en la línea de comandos de Linux con GNU Parallel

Parche en The Matrix en la línea de comando de Linux

3 gestores de contraseñas para la línea de comandos de Linux

¿Qué es el comando Watch de Linux + ejemplos?

Domina la línea de comandos de Linux

¿Qué es el comando matar en Linux?

¿Qué es una herramienta de línea de comandos simple y común para mostrar el uso de la red en una máquina Linux?