Linux常用命令学习笔记:free

一、命令简介

free命令是 Linux 系统中用于查看系统内存使用情况的实用工具,可以显示物理内存(RAM)、交换空间(Swap)以及缓冲区和缓存的使用情况。该命令是系统管理员和开发人员监控系统内存状态、诊断性能问题的基础工具。

二、基本语法

free [选项]

权限要求:所有用户均可使用,无需特殊权限。 默认行为:如果不指定选项,默认以 KB 为单位显示内存信息。

三、常用选项详解

选项全称功能说明示例
-h--human以人类可读的格式显示(自动选择合适单位)free -h
-b--bytes以字节为单位显示free -b
-k--kilo以 KB 为单位显示(默认)free -k
-m--mega以 MB 为单位显示free -m
-g--giga以 GB 为单位显示free -g
-t--total显示内存总和(物理内存+交换空间)free -t
-s <秒数>--seconds按指定间隔持续显示free -s 5
-c <次数>--count指定刷新次数(需与-s配合)free -s 2 -c 10
-w--wide宽格式显示,拆分buffers和cachefree -w
-l--lohi显示详细的高低内存统计free -l
--si使用1000的幂次而非1024free --si

四、输出字段解释

4.1 Mem行(物理内存)

字段说明
total系统总物理内存大小
used已使用的内存(包含缓存和缓冲区)
free完全未使用的内存
shared被多个进程共享的内存
buff/cache被缓冲区和缓存占用的内存
available系统可用内存(核心指标)

4.2 Swap行(交换空间)

字段说明
total交换分区总大小
used已使用的交换空间
free未使用的交换空间

五、实际应用场景

5.1 查看内存使用概况

# 推荐使用方式:人类可读格式
free -h

输出示例:

total        used        free      shared  buff/cache   available
Mem:           7.7G        3.0G        1.0G        120M        3.7G        4.3G
Swap:          2.0G          0B        2.0G

5.2 持续监控内存变化

# 每2秒刷新一次,共显示5次
free -h -s 2 -c 5

# 持续监控直到手动停止(Ctrl+C)
free -h -s 3

5.3 显示内存总和

# 显示物理内存和交换空间的总和
free -th

输出示例:

total        used        free      shared  buff/cache   available
Mem:           7.7G        3.0G        1.0G        120M        3.7G        4.3G
Swap:          2.0G          0B        2.0G
Total:         9.7G        3.0G        6.7G

5.4 宽格式显示

# 拆分显示buffers和cache
free -w

5.5 查看详细内存统计

# 显示高低内存统计信息
free -l

六、关键指标解读

6.1 available 字段的重要性

available​ 是判断内存是否充足的最重要指标,它表示系统当前可分配给新应用程序的内存大小。计算公式为:

available ≈ free + buffers + cached - 不可回收的部分

当 available 接近 total 时,说明内存充足;当 available 低于 total 的 10% 时,可能表示内存紧张。

6.2 内存使用率计算

# 计算内存使用率
free -m | awk '/Mem:/ {printf "使用率: %.1f%%\n", $3/$2 * 100}'

6.3 Swap 使用警示

如果 Swap 的 used 值持续较高或增长,说明物理内存不足,系统正在使用交换空间,这会导致性能下降。建议检查:

  • 是否有内存泄漏
  • 是否需要增加物理内存
  • 调整 swappiness 参数(默认60,可降低到10-30)

七、最佳实践

7.1 日常监控脚本

#!/bin/bash
# 内存监控脚本

# 获取内存信息
MEM_INFO=$(free -m | awk '/Mem:/ {print $2,$3,$7}')
TOTAL=$(echo $MEM_INFO | awk '{print $1}')
USED=$(echo $MEM_INFO | awk '{print $2}')
AVAILABLE=$(echo $MEM_INFO | awk '{print $3}')
USAGE_PERCENT=$(echo "scale=2; $USED/$TOTAL*100" | bc)

# 判断内存状态
if [ $(echo "$USAGE_PERCENT > 90" | bc) -eq 1 ]; then
    echo "警告:内存使用率超过90%!"
    echo "总内存: ${TOTAL}M, 已用: ${USED}M, 可用: ${AVAILABLE}M, 使用率: ${USAGE_PERCENT}%"
fi

7.2 结合其他命令使用

# 结合top命令查看进程内存占用
top -bn1 | head -10

# 结合vmstat查看虚拟内存状态
vmstat 1 5

# 查看详细内存信息
cat /proc/meminfo

八、常见问题与解决方案

8.1 内存使用率高的处理

问题:used 很高但 available 充足 原因:Linux 会利用空闲内存做缓存,这是正常现象,无需担心。 解决方案:关注 available 字段,只要 available 充足,系统运行正常。

8.2 手动释放缓存

# 生产环境慎用!会导致性能短暂下降
sync; echo 3 > /proc/sys/vm/drop_caches

8.3 调整Swap使用策略

# 降低Swap使用倾向(0-100,默认60)
echo "vm.swappiness=10" >> /etc/sysctl.conf
sysctl -p

九、与相关命令的区别

命令特点适用场景
free查看内存总量和使用情况快速了解内存概况
top实时进程级资源监控查看进程内存占用
vmstat综合性能监控(内存、CPU、IO)性能瓶颈分析
htop增强版top(图形化界面)交互式进程管理

十、总结

free命令是 Linux 系统内存监控的基础工具,通过掌握其核心选项和输出字段的含义,可以快速诊断内存问题、优化系统性能。关键要点:

  1. 优先使用 free -h:人类可读格式更直观
  2. 关注 available 字段:这是判断内存是否充足的核心指标
  3. 理解缓存机制:Linux 会利用空闲内存做缓存,这是正常优化
  4. 监控 Swap 使用:Swap used 持续增长可能表示内存不足
  5. 结合其他工具:配合 top、vmstat 等命令进行深度分析

通过合理使用 free 命令,可以有效监控系统内存状态,及时发现并解决内存相关问题,保障系统稳定运行。


作 者:南烛
链 接:https://www.itnotes.top/archives/687
来 源:IT笔记
文章版权归作者所有,转载请注明出处!


上一篇
下一篇