Linux shell:free命令的使用说明

Linux free命令使用

摘要: free命令用以显示当前系统内存使用情况,其数据取自/proc/meminfo文件。本文第一部分为free命令及参数(源自linux man手册)、第二部分展示常见命令free -m各字段含义,第三部分解释free命令数据来源。


一、free命令及相关参数

1.1、命令描述
  free - 显示系统已用及空余物理内存量、交换分区使用情况(swap memory)、内核占用的缓存、及共享内存。其命令形式为 free + options(可多个参数)。

1.2、参数
第一类单位参数:

  • 1)、 -b, –bytes, 以Byte为单位显示内存使用情况
  • 2)、 -k, –kilo, 以KB为单位, 这也是默认值
  • 3)、 -m, –mega, 以MB为单位显示内容使用情况
  • 4)、 -g, –giga, 以GB为单位显示内存使用情况

这里写图片描述
图1、第一类单位参数示意图

第二类参数:

  • 1)、 -h, –human, 自动将数值转换为人类易读形式

这里写图片描述
图2、free -h结果显示

  • 2)、 -c, –count, 展示结果count次,需与-s配合使用
  • 3)、 -s, –seconds, 动态刷新内存使用情况的间隔
    这里写图片描述
    图3、free -h -c 2 - s 4 结果显示

注:其他版本、形式等参数,可man free 查看

二、常用命令free -m各字段含义

  free -m, 是一个常用的命令,其以MB为单位显示当前内存的使用情况,下面将解释各字段含义。

这里写图片描述
图4、free -m结果显示

2.1、第一部分Mem行:

这里写图片描述

total 内存总数: 3865M
used 已经使用的内存数: 1545M
free 空闲的内存数: 2320M
shared 多个进程共享的内存总额 196M
buffers Buffer 缓存内存数: 176M
cached Page 缓存内存数:569M
关系:total (3865M) = used(1545M) + free(2320M)

2.2、第二部分(-/+ buffers/cache):

这里写图片描述

(-buffers/cache) used内存数:798M
(指的第一部分Mem行中的used – buffers – cached)
即为1545 – 176 – 569 = 800 取整时计算差异 2M

(+buffers/cache) free内存数: 3066M
(指的第一部分Mem行中的free + buffers + cached)
即为2320 + 176 + 569 = 3065 取整时计算差异 1M

2.3、第三部分是指交换分区

这里写图片描述

  当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。这些被释放的进程被临时保存到Swap空间中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。所以swap分区不被占用或者占用很少,说明现在系统内存够用,运行还算良好,不会影响系统运行。

三、free 命令数据由来

  free命令显示了当前系统内存使用情况,其数据取自/proc/meminfo文件。这里我们cat 一下。可见,在这个文件中,数据的存储就是以KB为单位,所以free的默认值也是KB。

这里写图片描述

重点:常用命令free -m各字段的含义

参考资料:
《操作系统之哲学原理》 邹恒明著
linux 系统 man手册 man free

纠错与建议
邮箱:db_hebut@163.com



版权声明

原文链接:https://blog.csdn.net/xd_hebuters/article/details/79203098

  • 1
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux系统中,SNMP(Simple Network Management Protocol)是一种用于网络设备管理的协议。在使用SNMP监控Linux系统的内存使用率时,可以使用自定义的free命令Free命令用于查看系统内存使用情况,包括总内存、已使用内存、可用内存等。在Linux系统中,可以通过在SNMP配置中使用shell脚本来执行自定义的free命令,并将结果转化为SNMP管理的形式。 首先,在Linux系统中创建一个shell脚本文件,例如mem_usage.sh,并在该文件中编写如下命令: ```shell #!/bin/bash total_mem=$(free -m | awk 'NR==2{print $2}') used_mem=$(free -m | awk 'NR==2{print $3}') free_mem=$(free -m | awk 'NR==2{print $4}') echo "1.3.6.1.4.1.11111.1.1.1.1.1.0" echo "integer" echo $total_mem echo "1.3.6.1.4.1.11111.1.1.1.1.2.0" echo "integer" echo $used_mem echo "1.3.6.1.4.1.11111.1.1.1.1.3.0" echo "integer" echo $free_mem ``` 这个脚本中,我们使用了awk命令来从free命令的输出中提取所需的内存信息,并通过echo命令将结果输出。 然后,通过在SNMP的配置文件中添加以下内容来调用自定义的free命令: ```shell extend mem_usage /path/to/mem_usage.sh ``` 其中,/path/to/mem_usage.sh是你创建的shell脚本文件的路径。 最后,通过SNMP的get命令来获取内存使用率,例如: ```shell snmpget -v3 -u username -a SHA -A password -l authNoPriv localhost SNMPv2-MIB::memUsage.0 ``` 以上命令中,-u指定了SNMP用户的用户名,-a指定了认证算法(这里使用SHA),-A指定了认证算法的密码,-l指定了认证的级别(这里是authNoPriv,只使用认证不使用加密),localhost指定了SNMP代理的地址,SNMPv2-MIB::memUsage.0是SNMP的OID(Object Identifier)表示内存使用率。 通过以上步骤,就可以使用自定义的free命令来监控和获取Linux系统的内存使用率了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值