接触shell不久,尝试计算内存的空闲率。
首先,采集内存使用信息。
在linux中,内存信息可以从文件/proc/meminfo中获取。
例如:
复制代码 代码示例:
[root@www ~]# cat /proc/meminfo |head -n10
MemTotal: 389364 kB
MemFree: 10824 kB
Buffers: 18096 kB
Cached: 245308 kB
SwapCached: 0 kB
Active: 183944 kB
Inactive: 171684 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 389364 kB
[root@www ~]#
[root@www ~]# cat /proc/meminfo |head -n1|cut -d " " -f8
389364
[root@www ~]# cat /proc/meminfo |head -n2|tail -n1|cut -d " " -f10
10452
通过cut可以得到内存总量和闲置内存数值。
通过算数运算:闲置/总量=闲置率。
注意,以下这行命令,执行后结果为“0”:
复制代码 代码示例:
[root@www ~]# echo `cat /proc/meminfo |head -n2|tail -n1|cut -d " " -f11` / `cat /proc/meminfo |head -n1|cut -d " " -f8`|bc
0
解决方法:
将闲置量X100后在和总量相除。
复制代码 代码示例:
[root@www ~]# echo `cat /proc/meminfo |head -n2|tail -n1|cut -d " " -f11`*100 / `cat /proc/meminfo |head -n1|cut -d " " -f8`|bc
1
1就是1%吧。采集数据中发现,空闲内存变化比较大,列数也不固定。
哪位有好的方法,欢迎分享下。