关注下方公众号,获取更多热点资讯
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. 监控内存消耗:当系统内存不足时,可以使用
free
命令来快速诊断内存瓶颈,判断是物理内存耗尽还是缓存/缓冲区占用了大量内存。2. 调试内存泄漏:通过
free -s
命令定期刷新内存状态,可以帮助开发者追踪某些进程的内存泄漏问题。3. 系统调优:系统管理员可以通过
free
命令评估系统是否需要调整交换空间的大小,或者是否需要增加物理内存。
五、总结
free
命令是Linux系统中非常重要的工具之一,它可以帮助系统管理员实时了解系统的内存使用情况,提供详尽的内存状态数据。通过本文的详细介绍,您现在应该对free
命令的每一个选项和参数有了更加清晰的理解,并可以在实际的运维工作中灵活使用这些功能。
欢迎关注我的公众号“编程与架构”,原创技术文章第一时间推送。




