watch -n 2 free -h 是 linux 下实时监控内存动态趋势最常用方案,每2秒刷新并高亮变化;关键看 available 列(如10gi),它代表真正可立即使用的内存,而非 free 或 buff/cache。

free -h 本身不支持“指定间隔实时观察动态趋势”,但可以通过 watch 命令配合 free 实现——这是 Linux 下最常用、最轻量的方案。
使用 watch 持续刷新 free 输出
watch 是系统自带的命令(多数发行版预装),它能以固定间隔重复执行任意命令,并高亮显示变化部分。
watch -n 2 free -h
-
-n 2表示每 2 秒刷新一次(可改为你需要的秒数,如1、0.5等) -
-h表示以人类可读格式(GiB/MiB)显示,更直观 - 默认会高亮每次刷新中发生变化的字段(比如
available列数值跳动时会闪一下)
✅ 提示:按
q键可退出watch;按Ctrl+C也可终止。
关注 available 字段才是关键
在 free -h 输出中,务必看 available 这一列(不是 free 或 buff/cache),它是内核估算的、当前可立即用于新进程的内存容量,反映真实可用性。
示例输出节选:
total used free shared buff/cache available Mem: 15Gi 4.2Gi 2.1Gi 180Mi 9.1Gi 10Gi
→ 此处 available: 10Gi 才是你真正能放心使用的内存余量。
进阶:只显示关键行 + 更简洁视图
如果只想聚焦 Mem 行和 available 列,减少干扰,可用:
watch -n 1 'free -h | grep "Mem:" | awk "{print \$1, \$7}"'
输出类似:
Every 1.0s: free -h | grep "Mem:" | awk "{print \$1, \$7}"
Mem: 10Gi
-
$1是Mem:,$7是available列(空格分隔下第 7 个字段) - 注意单引号包裹整个命令,避免 shell 提前解析
$
补充说明:为什么不用 free -h --si 或 free -m?
-
--si改用十进制单位(1000 进制),但日常监控意义不大,反而易混淆;-h足够清晰 -
-m固定以 MiB 显示,小内存设备尚可,大内存(如 64GiB)会显示成65536这类大数字,不如-h直观
不复杂但容易忽略











