foexle
Kaiser
ich mal wieder -.-
mir raucht der kopf ich bekomms einfach nicht hin und ich muss das heute noch fertig machen bevor ich feierabend habe
kurz ich will ein paar daten vom server dokumentieren ... das klappt auch alles soweit, bis auf die CPU auslastung !!!!
der code:
ich hoffe ihr könnt mir schnell helfen und sieht den fehler ich weis nimma weiter ....
mit top --> das geht nicht kommt immer 0.2% raus
dann mit /proc/stat weis ich nicht ob ich das richtig mache
hoffe auf schnelle antwort
mfg foexle
.
.
.
EDIT (autom. Beitragszusammenführung) :
.
ok das problem habe ich gefunden ... und zwar ist der integer wert zu gross den ich bekomme von cpu_all1 und cpu_all2
da fehlt dann eine stelle in der berechnung .. aus dem grund kommt da auch nur mist raus
es fehlt genau eine stelle ... wie kann ich das prob lösen ?
mir raucht der kopf ich bekomms einfach nicht hin und ich muss das heute noch fertig machen bevor ich feierabend habe
kurz ich will ein paar daten vom server dokumentieren ... das klappt auch alles soweit, bis auf die CPU auslastung !!!!
der code:
Code:
#!/bin/sh
secounds="$1"
secounds=`expr $secounds \* 60`
zaehler=1
while [ $zaehler -le $secounds ]
do
if [ `cat test.csv | wc -l` == 0 ]
then
echo "date;mem;cpu;user;">>test.csv
fi
date="`date +%H:%M:%S`"
mem="`top -n 1 |head -n 5 | grep Mem|awk {'print $5'}|awk -Fk '{print $1}'`"
cpu_il="`top -n 1 |head -n 5 | grep Cpu|awk {'print $5'}| awk -F% '{print $1}'`"
cpu_us1="`cat /proc/stat | head -n 1 | awk {'print $2'}`"
cpu_ni1="`cat /proc/stat | head -n 1 | awk {'print $3'}`"
cpu_sys1="`cat /proc/stat | head -n 1 | awk {'print $4'}`"
cpu_idle1="`cat /proc/stat | head -n 1 | awk {'print $5'}`"
cpu_all1="`expr $cpu_us1 + $cpu_ni1 + $cpu_sys1 + $cpu_idle1`"
sleep 2
cpu_us2="`cat /proc/stat | head -n 1 | awk {'print $2'}`"
cpu_ni2="`cat /proc/stat | head -n 1 | awk {'print $3'}`"
cpu_sys2="`cat /proc/stat | head -n 1 | awk {'print $4'}`"
cpu_idle2="`cat /proc/stat | head -n 1 | awk {'print $5'}`"
cpu_all2="`expr $cpu_us2 + $cpu_ni2 + $cpu_sys2 + $cpu_idle2`"
cpu_all="`expr $cpu_all2 - $cpu_all1`"
cpu_us="`expr $cpu_us2 - $cpu_us1`"
cpu_us="`echo $cp_us / $cpu_all \* 100.0| bc -l`"
echo $cpu_us
cpu="0`echo 100 - $cpu_il | bc -l `"
user="`apache2ctl status | grep workers|awk {'print $6'}`"
mem=`expr $mem / 1024`
test="$date;$mem;$cpu;$user;"
echo -e "$date\nMemory used: $mem Mb\nCpu used: $cpu\nIdle workers: $user\n---------------$
echo $test >> test.csv
zaehler=`expr $zaehler + 1`
sleep 1
done
ich hoffe ihr könnt mir schnell helfen und sieht den fehler ich weis nimma weiter ....
mit top --> das geht nicht kommt immer 0.2% raus
dann mit /proc/stat weis ich nicht ob ich das richtig mache
hoffe auf schnelle antwort
mfg foexle
.
.
.
EDIT (autom. Beitragszusammenführung) :
.
ok das problem habe ich gefunden ... und zwar ist der integer wert zu gross den ich bekomme von cpu_all1 und cpu_all2
da fehlt dann eine stelle in der berechnung .. aus dem grund kommt da auch nur mist raus
es fehlt genau eine stelle ... wie kann ich das prob lösen ?
Zuletzt bearbeitet: