■細かいことはいいから、freeコマンドとbashだけでなんとかしたいという人向け。
※性能監視ツールを入れる前のシナリオとして、以下のような場合に。
「空きメモリがキャッシュとして予約されている分もあるのは分かるけど、
スワップを使ってるのはメモリ不足かも。
とりあえず、どんぶり勘定で取得したい。。。」
■というわけで、デフォルト値は、「実メモリの使用率が 70% を超えた」 or 「スワップが 0% を超えた」の場合に、結果を出力します。
何も出力しないとちゃんと動いているか心配なので、「-t,test」を用意。
「実メモリの使用率が 0% を超えた」 and 「スワップが -1% を超えた」を出力。
後、簡易ながら、オプションで指定できるようにしたので、試してみて下さい。
$ w3m https://raw.github.com/labunix/sa_report/master/swapcheck.sh
if [ "$#" -ne 0 ];then
for list in "$@";do
case $list in
-t|test)
SWAPLIMIT=-1
MEMLIMIT=0
break
;;
-s:*|SWAPLIMIT=*)
SWAPLIMIT=`echo $1 | sed s/"="/":"/ | awk -F\: '{print $2%100}'`
shift;
;;
-m:*|MEMLIMIT=*)
MEMLIMIT=`echo $1 | sed s/"="/":"/ | awk -F\: '{print $2%100}'`
shift;
;;
-h|--help|*)
echo "# at 1st Test"
echo "Usage $0 [OPTION]"
echo ""
echo "-h,--help This Help"
echo "-t,test Test Mode"
echo " SWAPLIMIT=-1,MEMLIMIT=0"
echo "-s:[num],SWAPLIMIT=[num] num is -1 to 99"
echo "-m:[num],MEMLIMIT=[num] num is -1 to 99"
echo ""
echo "DEFAULT SWAPLIMIT=0,MEMLIMIT=70"
exit 1;
;;
esac
done
fi
if [ "x$MEMLIMIT" == "x" ];then
MEMLIMIT=70
fi
if [ "x$SWAPLIMIT" == "x" ];then
SWAPLIMIT=0
fi
MYDATE=`env LANG=C date '+%Y/%m/%d,%H:%M:%S'`
free | grep ^Swap | \
awk '{if (($3/$2*100)>'"${SWAPLIMIT}"') print "'"$MYDATE"',Swap Used:" ($3/$2*100)"%"}'
free | grep ^Mem | \
awk '{if (($3/$2*100)>'"${MEMLIMIT}"') print "'"$MYDATE"',Mem Used :"($3/$2*100)"%"}'
unset SWAPLIMIT MEMLIMIT list
exit 0