【未熟】Linuxの実行中の負荷監視と終了時の負荷平均の自動計算を行なうshellScript
これもずいぶん前に必要に駆られたのでやっつけで作ってみたんですが、
監視を抜けるためにqをpressしたら終了、にしたら
ttyが変になってしまって終了後のcli入力が見れない(一応入力自体はできてる)事に。
というなんともポンコツなスクリプトなのですが、
どなたか何がイケないのか教えていただければすごく助かります。
一応監視内容はmpstatの数値を追っているだけです。
実行後、qキーを押すとスクリプト終了となり、
抜けた後にはawkで自動計算を走らせ、平均値を算出させます。
if [ -t 0 ]; then stty -echo -icanon time 0 min 0; fi keypress='' result='' echo "time load %user %nice %sys %iowait" while : do tl=`uptime | sed -e "s/ \([0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}\).\+load average:/\1/g" | sed -e "s/ \+/ /g" | cut -d" " -f1,2 | sed -e "s/,//g" | xargs echo -n` tl=$tl`echo -n " "` tl=$tl`mpstat 1 1 | grep Average | sed -e "s/ \+/ /g" | cut -d" " -f3,4,5,6` echo $tl | sed -e "s/ /\t/g" result="$result\n$tl" read keypress if [ "$keypress" = "q" ]; then break fi done # calc average echo "check finished." echo -n "load average: " echo -e $result | grep -v "time" | awk '{ sum += $2; num++}; END { print sum/num }' echo -n "user cpu usage: " echo -e $result | grep -v "time" | awk '{ sum += $3; num++}; END { print sum/num"%" }' echo -n "iowait average: " echo -e $result | grep -v "time" | awk '{ sum += $6; num++}; END { print sum/num"%" }'