在linux计算机中如何用free命令脚本计算内存占用率,shell脚本案例(四)利用 free 命令精确监控RAM的使用率...

需求:利用free命令精确监控RAM的使用率

具备知识:grep,free,awk,bc

脚本如下

[[email protected] scripts]# cat mem.sh

#!/bin/bash -

# free -m 代表着以M单位进行输出,如果内存足够大,那么您应该使用-g参数,容量以GB为单位输出。

mem_total=`free -m | grep Mem | awk ‘{print $2}‘`

mem_used=`free -m | grep Mem | awk ‘{print $3}‘`

mem_free=`free -m | grep Mem | awk ‘{print $4}‘`

# 首先bash shell默认是不支持小数点计算的,所以这里我采取的是使用awk计算,当然,也可以使用bc进行计算。

# 我筛选出了总容量和使用中的容量,去计算目前RAM的使用率是多少。

sum_used=`free -m | grep Mem | awk ‘{print ($3/$2)*100}‘`

# 进行输出,这里我在每个数值后面添加了M显示,使输出结果更加易懂。变量和需要在变量后面添加的字符,应该用{}号隔开,比如 ${a}M,表示在输出变量a的后面加上M。

echo "mem_total: ${mem_total}M"

echo "mem_used: ${mem_used}M"

echo "men_free: ${mem_free}M"

echo "sum_used: $sum_used%"

# 同样,bash shell中是不支持小数点的比较的,这里我采用了bc对数值进行比较,如果结果为true,返回值为1,false返回值为0。

# 比如 echo "1.1>1.2"|bc 那么输出就是0,如果为echo "1.1>1"|bc 那么输出结果为1.

warning=`echo "$sum_used>90"|bc`

# 利用比较返回的值作为是否发送邮件的条件,如果不为1,及使用率大于90,那么发送邮件。

if [ $warning -ne 1 ];then

echo "warning : MEM use ${sum_sed}%" | mail -s "MEM status warning." [email protected]

fi

[[email protected] scripts]#

最后可以加入定时任务中执行。

脚本运行

[[email protected] scripts]# bash mem.sh

mem_total: 1006M

mem_used: 986M

men_free: 19M

sum_used: 98.0119%

[[email protected] scripts]#

至此,结束。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值