Üdv.
Arra törekedtem, hogy a processzor(ok) (össz)terhelését kiírassam százalékosan. Több procinál tehát a teljes kapacitás tereltségét egy számként.
Erre írtam az alábbi scriptet, ami az uptime-ban megadott load érték alapján dolgozik:
#!/bin/sh
..
..
PROCNUMBER=2;
..
(26 sor kihagyva)
..
PROCUSAGE=$(( $(( $((`uptime |cut -d : -f 5|cut -d , -f 1 |cut -d . -f 1| cut -d " " -f 2|cut -d " " -f 2` * 100))+$((`uptime |cut -d : -f 5|cut -d , -f 1 |cut -d . -f 2| cut -d " " -f 2|cut -d " " -f 2`)) )) / $PROCNUMBER));
echo $PROCUSAGE;
fi;
A gondom az, hogy ha a load 0.09, vagy 0.08, akkor hibaüzenetet kapok. Minden más esetben jól működik a dolog. A hibaüzenet:
./checkin_all.sh: line 29: 08: value too great for base (error token is "08")
A 29-es sor a "PROCUSAGE=.." kezdetű.
Mégis, mi miatt nem szereti azt a két értéket?
- 1091 megtekintés
Hozzászólások
Esetleg oktális számrendszerben nincs 8 és 9, mint számjegy.
("value too great for base")
Mivel 0-val kezdődik, ezért oktálisnak veszi valamelyik program ??
- A hozzászóláshoz be kell jelentkezni
Tök logikus - erre nem gondoltam... Köszönöm!
- A hozzászóláshoz be kell jelentkezni
Ha eléírod a "10#" -et, akkor decimálisként fogja értelmezni.
Ha jól értelmeztem az általad írtakat (az egyperces átlag * 100 / PROCNUMBER), akkor itt egy rövidebb megoldás:
PROCUSAGE=$(( 10#$(cut -d " " -f1 /proc/loadavg | tr -d '.') / $PROCNUMBER))
- A hozzászóláshoz be kell jelentkezni