free 概述
`free` 命令提供了一份关于操作系统当前如何管理内存的快照。这有助于判断系统是否因内存不足而导致性能下降,或者是否拥有足够的空闲内存。
理解内存类型
要正确解释 `free` 命令的输出,理解物理内存(RAM)、交换内存以及缓冲区/缓存的概念非常重要。
主要内存项
- Mem (物理内存): 系统上安装的 RAM 总量。这是操作系统和正在运行的程序使用的实际内存空间。
- Swap (交换内存): 当物理内存不足时使用的硬盘空间。它像 RAM 一样使用,但速度要慢得多。
- total: 总内存或交换空间。
- used: 当前使用的内存或交换空间。
- free: 可用的内存或交换空间。
- shared: 多个进程共享的内存。
- buff/cache: 用作内核缓冲区和页面缓存的内存。这不是实际'浪费的'内存,而是更接近于'可用'内存,可以在需要时随时分配给应用程序。
- available: 当新应用程序请求时可以分配的内存量。它比 `free` 字段能更准确地表示'可用'内存量。(在 Linux 内核 3.14 及更高版本中提供)
主要的 free 命令选项
`free` 命令允许通过各种选项更改输出单位,或过滤并显示特定信息。
1. 输出单位选项
2. 其他有用的选项
生成的命令:
请尝试组合命令。
描述:
`free` 执行命令。
通过组合这些选项,您可以与 AI 一起虚拟地执行命令。
使用示例
通过 `free` 命令的各种使用示例,学习如何有效地监控和分析系统内存使用情况。
以人类可读格式输出内存信息
free -h
最常用的选项,自动将内存信息转换为 MB 或 GB 单位,以便于查看。
以兆字节为单位输出内存信息
free -m
当您想清楚地以兆字节(MB)为单位检查内存使用情况时使用。
每隔 5 秒更新一次内存信息,共 3 次
free -h -s 5 -c 3
在短时间内观察系统内存变化时非常有用。(例如:在运行特定程序时观察内存使用情况的变化)
单独输出缓冲区和缓存(以 MB 为单位)
free -m -w
当您想将缓冲区和缓存内存作为独立的列查看时使用。`-w` 选项主要用于调试或详细分析。
将内存使用情况与 Unix 时间戳一起记录(脚本示例)
echo "$(date +%s),$(free -m | grep Mem | awk '{print $2,$3,$4,$6,$7}')" >> mem_log.csv
可用于 shell 脚本中,以定期记录内存使用情况并创建时间序列数据。