GNU/Linux >> Tutoriels Linux >  >> Linux

Bash :attendez que l'utilisation du processeur passe en dessous d'un certain seuil

Vous pouvez utiliser une fonction basée sur le top utilitaire. Mais notez que cela n'est pas très fiable car l'utilisation du processeur peut - rapidement - changer à tout moment. Cela signifie que simplement parce que la vérification a réussi, il n'est pas garanti que l'utilisation du processeur restera faible tant que le code suivant s'exécute. Vous êtes prévenu.

La fonction :

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

Notez que j'utilise bc -l pour la comparaison puisque top imprime l'utilisation du processeur sous forme de valeur flottante.


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
}

Notez qu'il nécessite l'installation du package sysstat.


Une version beaucoup plus efficace appelle simplement mpstat et awk une fois chacun, et les maintient tous les deux en cours d'exécution jusqu'à ce qu'ils soient terminés ; pas besoin de sleep explicitement et redémarrez les deux processus toutes les secondes (ce qui, sur une plate-forme embarquée, pourrait représenter une surcharge mesurable) :

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

J'utilise $13 ici parce que c'est là idle % est pour ma version de mpstat; remplacez-le de manière appropriée si le vôtre diffère.

Cela a l'avantage supplémentaire de faire correctement les calculs en virgule flottante, plutôt que d'avoir à arrondir à des nombres entiers pour les calculs natifs du shell.


Linux
  1. Bash surveille l'utilisation du disque

  2. Bash :attendre avec un délai d'attente

  3. Comment obtenir l'utilisation du processeur

  4. Attendez que le service démarre dans le script bash

  5. Calcul précis de l'utilisation du processeur donnée en pourcentage sous Linux ?

Bash jusqu'à la boucle

Comment afficher l'utilisation du processeur à partir de la ligne de commande

Comment obtenir l'utilisation du processeur d'un seul processus sous Linux

Contrôlez l'utilisation de la RAM et du CPU par Kodi en temps réel

Liste détaillée de l'utilisation des ressources

Comment vérifier l'utilisation ou l'utilisation du processeur Linux