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

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

このブログの人気の投稿

RAC環境でimpdpをパラレルで実行するとき

TrustedInstaller.exe メモリリーク