linux系统服务器有一个好处就可以实时的使用脚本来检测到系统的一个运行状态了,下面我们来看看关于linux中使用shell脚本检测内存使用情况例子,希望对各位有帮助.
公司服务器最近两天老是因为内存被使用满而造成死机,实在是受不了老叫机房的人去帮忙重启,专门写了个脚本来释放下内存,当然这台服务器不是太重要,我粗鲁的处理方式估计不会适合大多数服务器,请大家使用之前先考虑清楚,不然造成数据丢失就不关我的事了.
脚本内容:
- catcheck-mem.sh
- #!/bin/bash
- mem_total=`free-m|awk'NR==2'|awk'{print$2}'`
- mem_free=`free-m|awk'NR==3'|awk'{print$4}'`
- mem_used=`free-m|grepMem|awk'{print$3}'`
- if(($mem_used!=0));then
- mem_per=0`echo"scale=2;$mem_free/$mem_total"|bc`
- DATA="$(date-d"today"+"%Y-%m-%d-%H-%M")freepercentis:$mem_per"
- echo$DATA>>/var/log/mem_detect.log
- mem_warn=0.20
- mem_now=`expr$mem_per\>$mem_warn`
- if(($mem_now==0));then
- sync--phpfensi.com
- echo3>/proc/sys/vm/drop_caches
- fi
- fi
下面说明下吧:
- #!/bin/bash
- #系统分配的区总量
- mem_total=`free-m|awk'NR==2'|awk'{print$2}'`
- #当前剩余的大小
- mem_free=`free-m|awk'NR==3'|awk'{print$4}'`
- #当前已使用的used大小
- mem_used=`free-m|grepMem|awk'{print$3}'`
- if(($mem_used!=0));then
- #如果已被使用,则计算当前剩余free所占总量的百分比,用小数来表示,要在小数点前面补一个整数位0
- mem_per=0`echo"scale=2;$mem_free/$mem_total"|bc`
- DATA="$(date-d"today"+"%Y-%m-%d-%H-%M")freepercentis:$mem_per"
- echo$DATA>>/var/log/mem_detect.log
- #设置的告警值为20%(即使用超过80%的时候告警)。
- mem_warn=0.20
- #当前剩余百分比与告警值进行比较(当大于告警值(即剩余20%以上)时会返回1,小于(即剩余不足20%)时会返回0)
- mem_now=`expr$mem_per\>$mem_warn`
- #如果当前使用超过80%(即剩余小于20%,上面的返回值等于0),释放内存
- if(($mem_now==0));then
- sync
- echo3>/proc/sys/vm/drop_caches
- fi
- fi