暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Linux free命令你真的会用吗?

编程与架构 2024-10-02
148
关注下方公众号,获取更多热点资讯

Linux free命令你真的会用吗?

在Linux系统中,内存的管理和监控是一个非常关键的任务。系统管理员需要时刻了解内存的使用情况,以确保系统正常运行并避免因内存不足导致的崩溃或性能下降。free
命令作为Linux系统中一个内置的、强大的内存监控工具,能够方便快捷地提供内存状态的详细信息。本文将详细介绍free
命令的各种用法以及它们背后的含义。

在进入详细介绍之前,先总结一下free
命令的各个常用选项及其功能:

  • • 默认输出free
     - 显示系统当前内存状态。

  • • 人类可读格式free -h
     - 以MB、GB等人类可读的格式显示内存。

  • • 定时刷新free -s [秒数]
     - 按指定时间间隔刷新内存状态。

  • • 显示Low和High内存free -l
     - 显示Low内存和High内存的使用情况。

  • • 显示总内存和交换空间free -t
     - 显示包括物理内存和交换空间在内的总内存使用情况。

  • • 指定单位显示free --kilo
    free --mega
    free --giga
     - 以KB、MB、GB为单位显示内存使用情况。

  • • 打印行数标题free -c [次数]
     - 控制打印多少次刷新结果并显示标题行。

一、free
命令的基本功能概述

free
命令的主要功能是显示系统内存和交换空间的使用情况。它提供的信息包括:

  • • 物理内存(RAM)的总量、已使用量、空闲量

  • • 缓冲区缓存占用的内存量

  • • 交换分区的使用情况

  • • 可用内存,即操作系统认为可以为新程序分配的内存量

这些信息对系统管理员来说至关重要,因为它们可以帮助分析系统的内存消耗,找出哪些进程占用了大量内存,从而进行合理的优化和调整。

1. 默认输出

执行free
命令时,默认输出是系统当前内存的整体情况:

free

输出示例:

              total        used        free      shared  buff/cache   available
Mem:        16389576     6542716     3484912      301036     6361952     8892340
Swap:        2097148           0     2097148

其中各列的含义如下:

  • • total:系统的物理内存总量(第一行)和交换空间总量(第二行)。

  • • used:当前系统已使用的内存或交换空间。

  • • free:未使用的内存或交换空间。

  • • shared:被多个进程共享的内存数量。通常与共享内存相关的进程较少,因此此列的值相对较小。

  • • buff/cache:用于缓存和缓冲的内存。操作系统通常会将未被使用的内存用于缓存文件,以提高性能。此列值较高并不意味着内存紧张。

  • • available:系统可以无须释放缓存、缓冲或交换空间时可供新进程使用的内存。此列比“free”更能反映真实的可用内存情况。

2. 以可读格式显示 (-h
)

默认输出的单位是KB,但这对于阅读并不方便。使用-h
选项可以将内存大小以合适的单位(自动计算并使用B、K、M、G、T)显示内存使用情况。

free -h

输出示例:

              total        used        free      shared  buff/cache   available
Mem:           15Gi       6.2Gi       3.4Gi       294Mi       6.1Gi       8.5Gi
Swap:         2.0Gi          0B       2.0Gi

这种格式使得阅读更方便,特别是在内存量较大时,例如服务器或工作站的内存大小可能以GB甚至TB为单位。

3. 定时刷新 (-s
)

有时我们需要观察系统内存随时间的变化,-s
选项可以让free
命令按指定的时间间隔刷新内存状态。例如,以下命令每隔2秒刷新一次内存状态:

free -s 2

示例输出(每2秒更新一次):

              total        used        free      shared  buff/cache   available
Mem:           15Gi       6.2Gi       3.4Gi       294Mi       6.1Gi       8.5Gi
Swap:         2.0Gi          0B       2.0Gi

该命令会持续运行,直到用户按Ctrl+C终止。定时刷新对于观察内存的动态变化、调试内存泄漏等问题非常有用。

4. 显示Low和High内存 (-l
)

有些系统(尤其是32位系统)有两类内存:Low内存和High内存。Low内存是操作系统核心可以直接访问的部分,而High内存则需要特殊的管理机制。在某些特定场景下,你可能需要查看Low和High内存的使用情况,这时可以使用-l
选项:

free -l

输出示例:

              total        used        free      shared  buff/cache   available
Mem:        16389576     6542716     3484912      301036     6361952     8892340
Low:         8421376     4022716     4398660
High:        7968200     2520000     5448200
Swap:        2097148           0     2097148

在32位系统中,Low内存通常更宝贵,因为它直接可用并且受限于硬件的地址空间。

5. 显示总内存和交换空间 (-t
)

如果你想要查看系统的总内存使用情况,包括物理内存和交换空间的总量,可以使用-t
选项。它会在输出的最后添加一行,显示物理内存和交换空间的总和。

free -t

输出示例:

              total        used        free      shared  buff/cache   available
Mem:        16389576     6542716     3484912      301036     6361952     8892340
Swap:        2097148           0     2097148
Total:      18486724     6542716     5582056

这有助于快速了解整个系统的内存和交换空间的总体状况。

6. 按照指定单位显示 (--kilo
--mega
--giga
)

free
命令允许用户选择内存的显示单位,例如使用KB、MB、GB等。可以通过--kilo
--mega
--giga
等选项强制输出以特定单位显示:

free --mega

输出示例:

              total        used        free      shared  buff/cache   available
Mem:          16002        6390        3402         294        6208        8687
Swap:          2047           0        2047

使用这些选项可以使得内存数值符合我们的实际需求,更容易与其他工具或指标对比。

7. 打印行数标题 (-c
)

使用-c
选项可以控制打印多少次刷新结果,例如:

free -c 3

此命令会打印三次free
命令的结果,然后退出。适用于希望一次性查看多次更新情况,但不希望持续监控的场景。

四、实际应用场景

  1. 1. 监控内存消耗:当系统内存不足时,可以使用free
    命令来快速诊断内存瓶颈,判断是物理内存耗尽还是缓存/缓冲区占用了大量内存。

  2. 2. 调试内存泄漏:通过free -s
    命令定期刷新内存状态,可以帮助开发者追踪某些进程的内存泄漏问题。

  3. 3. 系统调优:系统管理员可以通过free
    命令评估系统是否需要调整交换空间的大小,或者是否需要增加物理内存。

五、总结

free
命令是Linux系统中非常重要的工具之一,它可以帮助系统管理员实时了解系统的内存使用情况,提供详尽的内存状态数据。通过本文的详细介绍,您现在应该对free
命令的每一个选项和参数有了更加清晰的理解,并可以在实际的运维工作中灵活使用这些功能。


欢迎关注我的公众号“编程与架构”,原创技术文章第一时间推送。



文章转载自编程与架构,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论