vergleichen Wie kann ich den CPU-Auslastung Wert mit Shell-Skript comapre, erhalte ich einen Fehler wie [: =: unärer Operator an der Linie erwartet if [ $message -ne "" ]
CPUUsage Wert unter Verwendung von Shell-Skript
#!/bin/sh
expected_cpuusage="95"
cpu_usage=`top -n 1 -b|grep Cpu|awk '{print $2}'|cut -d"%" -f1""`
message=""
if [ $cpu_usage -gt $expected_cpuusage ] ##{x%?}
then
echo "CPU usage exceeded";
if [ $message -ne "" ]
then
message="$message\n\nCPU usage exceeded configured usage limit \nCurrent CPU usage is $cpu_usage\nConfigured CPU usage is $expected_cpuusage";
else
message="CPU usage exceeded configured usage limit \nCurrent CPU usage is $cpu_usage\nConfigured CPU usage is $expected_cpuusage";
fi ;
fi
die Ausgabe von 'top' Parsing ist kaum der richtige Ansatz. Versuchen Sie 'man uptime' oder lesen Sie direkt von'/proc', wenn Ihre Architektur das hat. – tripleee
Ich stimme @tripleee zu. Hier ist eine bessere Methode, um die CPU-Auslastung zu erhalten: 'bc <<<" scale = 3; $ (ps ax -o pcpu = | sortieren -n | xargs printf '+% s' | schneiden -c 2- | bc)/$ (grep -c^processor/proc/cpuinfo) "' (setzt bash und ein Linux '/ proc /' voraus). Dies ergibt einen Durchschnitt über alle Kerne, so dass eine 50% ige Nutzung eines Kerns auf einem Doppelkernsystem "25.000" zurückgeben würde. Der Teil "CPU-Auslastung" sollte ziemlich portabel sein, nur die "Wie viele Kerne?" Teil ist nicht. – Sorpigal
Eine nette Sache bei diesem Ansatz ist, dass Sie 'scale = 3;' fallen lassen und sicher sein können, dass Sie jetzt eine Nicht-Gleitkommazahl zurückbekommen, die Sie direkt mit '-gt' verwenden können. – Sorpigal