Timer im Skript zum Überprüfen der CPU-Auslastung in Linux

Timer im Skript zum Überprüfen der CPU-Auslastung in Linux

Ich suche nach einer Anweisung, um zu überprüfen, ob die CPU 10 Minuten lang über 90 % liegt. Wenn die CPU länger als 10 Minuten nicht unter 90 % fällt, wird eine Warnung ausgegeben

Mein bisheriges Skript:

cpu_used = "90"

Genommen vonHughs Drehbuch

cpu=`top -b -n2 -p 1 | fgrep "Cpu(s)" | tail -1 | awk -F'id,' -v prefix="$prefix" '{ split($1, vs, ","); v=vs[length(vs)]; sub("%", "", v); printf "%s%.1f%%\n", prefix, 100 - v }'`

Beispiel

    if [ $cpu -ge $cpu_used ] ; then
        echo $cpu
    fi

Wie kann ich der obigen if-Anweisung 10 Minuten hinzufügen, um zu prüfen, ob die CPU-Auslastung länger als 10 Minuten über 90 % liegt, bevor die Warnung gesendet wird? Vielen Dank im Voraus

Antwort1

Die einzige Möglichkeit, dies zu erreichen, besteht darin, die CPU-Auslastung in einem 10-Minuten-Intervall aufzuzeichnen.

So können Sie überprüfen, ob Ihre CPU länger als 10 Minuten zu über 90 % ausgelastet war.

#!/bin/bash

starttime=$(date +%s)
cpu_used=90
retval="Over 90% for 10 min"
while [ $(($(date +%s) - $starttime)) -le 600 ]
do

cpu=`top -b -n2 -p 1 | fgrep "Cpu(s)" | tail -1 | awk -F'id,' -v prefix="$prefix" '{ split($1, vs, ","); v=vs[length(vs)]; sub("%", "", v); printf "%s%.1f%%\n", prefix, 100 - v }'`
cpu=${cpu::-1}
cpu=${cpu%.*}

# If at any time the current cpu utilization is below the threshold, exit.
if [ $cpu -le $cpu_used ] ; then
        retval="Not over 90% for 10 min"
        break
fi

# Longer you sleep, less resource intensive. However, longer sleep decreases the accuracy.
sleep 1
done

echo $retval

verwandte Informationen