GNU/Linux >> Tutoriales Linux >  >> Linux

Bash:espere hasta que el uso de la CPU esté por debajo de un umbral

Puede usar una función basada en el top utilidad. Pero tenga en cuenta que hacerlo no es muy confiable porque la utilización de la CPU puede cambiar rápidamente en cualquier momento. Lo que significa que solo porque la verificación tuvo éxito, no se garantiza que la utilización de la CPU se mantenga baja mientras se ejecute el siguiente código. Has sido advertido.

La función:

function wait_for_cpu_usage {
    threshold=$1
    while true ; do
        # Get the current CPU usage
        usage=$(top -n1 | awk 'NR==3{print $2}' | tr ',' '.')

        # Compared the current usage against the threshold
        result=$(bc -l <<< "$usage <= $threshold")
        [ $result == "1" ] && break

        # Feel free to sleep less than a second. (with GNU sleep)
        sleep 1
    done
    return 0
}

# Example call
wait_for_cpu_usage 25

Tenga en cuenta que estoy usando bc -l para la comparación, ya que top imprime la utilización de la CPU como un valor flotante.


wait_for_cpu_usage()
{
    current=$(mpstat 1 1 | awk '$12 ~ /[0-9.]+/ { print int(100 - $12 + 0.5) }')
    while [[ "$current" -ge "$1" ]]; do
        current=$(mpstat 1 1 | awk '$12 ~ /[0-9.]+/ { print int(100 - $12 + 0.5) }')
        sleep 1
    done
}

Tenga en cuenta que requiere el paquete sysstat instalado.


Una versión mucho más eficiente simplemente llama a mpstat y awk una vez cada uno, y los mantiene a ambos ejecutándose hasta que terminen; no es necesario explícitamente sleep y reinicie ambos procesos cada segundo (lo que, en una plataforma integrada, podría sumar una sobrecarga medible):

wait_until_cpu_low() {
    awk -v target="$1" '
    $13 ~ /^[0-9.]+$/ {
      current = 100 - $13
      if(current <= target) { exit(0); }
    }' < <(LC_ALL=C mpstat 1)
}

estoy usando $13 aquí porque ahí es donde idle % es para mi versión de mpstat; sustitúyalo apropiadamente si el suyo es diferente.

Esto tiene la ventaja adicional de hacer correctamente las matemáticas de punto flotante, en lugar de tener que redondear a números enteros para las matemáticas nativas de shell.


Linux
  1. Uso del disco del monitor Bash

  2. Bash:esperar con tiempo de espera

  3. Bash:Bucle hasta que el estado de salida del comando sea igual a 0

  4. ¿Cálculo preciso del uso de la CPU dado en porcentaje en Linux?

  5. ¿Cómo registro el uso de la CPU por proceso?

Golpear hasta bucle

Cómo mostrar el uso de la CPU desde la línea de comandos

Cómo obtener el uso de la CPU de un solo proceso en Linux

Controle el uso de RAM y CPU por Kodi en tiempo real

Lista detallada del uso de recursos

Cómo verificar el uso o la utilización de la CPU de Linux