linux 監控系統資源-內存

監控內存使用量:

思路:使用free -m 提取相關數據,算出使用內存量輸入到文件,並且每一次計算都與當前文件中的數據對比,大於文件中的數據則替換。保留當天最大內存使用量,每天發送郵件(可以單獨寫個發郵件的腳本)。腳本可以寫到計劃任務裏多長時間執行一次。也可以在腳本中加上wheel循環後臺啓動

wKiom1eHFvPj-SG3AAAY0P_tIgA293.png

Mem行的total:系統總內存

-/+ buffers/cache行的used:實際使用內存

-/+ buffers/cache行的free:程序實際可調用內存




#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/java/jdk1.7.0_45/bin:/usr/java/jdk1.7.0_45/jre/bin:/usr/local/CCDTSoft/mvn_maven/bin:/root/bin
DAYS=`date +"%Y%m%d"`free
DATE=`date +"%Y-%m-%d--%H:%M:%S"`
DATA_PATH=/usr/local/CCDTSoft/data/BullDog/COUNT/${DAYS}
FILE=`hostname`_Maxfree.txt
#總的內存
TOTAL=`free -m|grep Mem|awk '{print $2}'`
#free -m 第二行的USER,實際已用內存
USED=`free -m|grep buffers/cache|awk '{print $3}'`
#free -m 第二行的free,程序可調用實際內存
FREE=`free -m|grep buffers/cache|awk '{print $4}'`
#百分比USED/TOTAL(實際已用內存百分比)
USAGE_B=`awk 'BEGIN{printf "%.2f%\n",('$USED'/'$TOTAL')*100}'`
if [ ! -d ${DATA_PATH} ];
    then
        mkdir -p ${DATA_PATH}
fi
#每天第一次 統計創建統計文件並輸入第一次的值,接下來的每一次比較文件中存在的值,如果大於已用內存的百分比則輸出替換文件內容,保留最大的內存使用量數據
if [ ! -f ${DATA_PATH}/${FILE} ];
        then
            touch ${DATA_PATH}/${FILE}
                        echo -e "${FILE}\n當天最大內存使用情況:${DATE}\n總內存(m): ${TOTAL}\n內存實際使用量(m): ${USED}\n已用內存百分比(m): ${USAGE_B}\n---\n" > ${DATA_PATH}/${FILE}
                #echo "內存實際使用用量(m): ${USED}" >> ${DATA_PATH}/${FILE}
                #echo "已用內存百分比(m): ${USAGE_B}" >> ${DATA_PATH}/${FILE}
        else
            if [ ${USED} -gt `cat ${DATA_PATH}/${FILE}|grep 內存實際使用量|awk '{print $2}'` ];
                then
                    echo -e "${FILE}\n當天最大內存使用情況:${DATE}\n總內存(m): ${TOTAL}\n內存實際使用量(m): ${USED}\n已用內存百分比(m): ${USAGE_B}\n---\n" > ${DATA_PATH}/${FILE}
            fi
fi
#mail -s "${DAYS}-主機nginxLoad-tomcat內存使用情況" @qq.com < ${DATA_PATH}/${FILE}
#echo USAGE_B=$USAGE_B

效果圖

wKiom1eHGrWgrh2LAAAdIy6H8t0011.png

有什麼建議和需要改正的地方可以留言,謝謝

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章