Search

[bash] linuxでcpu毎の使用率を取得する。

2015年11月10日

load averageを調べる

$ echo `date +"%Y/%m/%d"``uptime`

linuxでcpu毎の使用率を取得する。

mpstatをインストールしていない状況では以下のようにスクリプトをくむ

#!/bin/sh

if [ $# -ne 1 ]; then
  /bin/echo "引数がありません。cpu0など指定してください。"
  exit 1
fi

hist_file="/root/smtp_$1"
cpu1=(`/bin/cat /proc/stat | grep $1`)

if [ ! -e $hist_file ]; then
    /bin/echo "$hist_fileファイルがありません。"
    /bin/echo ${cpu1[@]} > $hist_file
    exit 1
fi

cpu2=(`/bin/cat $hist_file`)

total=`/usr/bin/expr ${cpu1[1]} - ${cpu2[1]} + ${cpu1[2]} - ${cpu2[2]} + ${cpu1[3]} - ${cpu2[3]} + ${cpu1[4]} - ${cpu2[4]}`

user=`/bin/echo "scale=2; (${cpu1[1]} - ${cpu2[1]}) * 100 / $total" | /usr/bin/bc;`
nice=`/bin/echo "scale=2; (${cpu1[2]} - ${cpu2[2]}) * 100 / $total" | /usr/bin/bc;`
sys=`/bin/echo "scale=2; (${cpu1[3]} - ${cpu2[3]}) * 100 / $total" | /usr/bin/bc;`
idle=`/bin/echo "scale=2; (${cpu1[4]} - ${cpu2[4]}) * 100 / $total" | /usr/bin/bc;`

/usr/bin/printf " %3.2f " $user
/usr/bin/printf " %3.2f " $nice
/usr/bin/printf " %3.2f " $sys
/usr/bin/printf " %3.2f\n " $idle

/bin/echo ${cpu1[@]} > $hist_file

以下のパーセンテージを表示するようにします。 user nice sys idle 実行方法は以下のようにします。

# sh test2.sh cpu0
 0.05  0.00  0.11  99.82