上一篇                     
               
			  如何看linux剩余内存
- Linux
- 2025-07-24
- 2649
 在Linux中,使用
 
 
free -h命令可查看剩余内存,-h`表示以人类可读的GB/MB格式显示
在 Linux 系统中,监控剩余内存是保障系统稳定运行的重要操作,以下是多种查看内存剩余量的方法及详细解析:
核心命令行工具
-  free 命令 -  基础用法: free -h(-h 表示以人类可读的 MB/GB 为单位)total used free shared buff/cache available Mem: 15G 9G 3G 1.5G 2G 4G Swap: 2G 0B 2G- 关键指标:
 | 字段 | 含义 |
 |—————|————————–|
 | total | 总物理内存 |
 | used | 已用内存(包含缓存) |
 | free | 完全空闲内存 |
 | available | 可分配给新进程的内存 |
 | buff/cache | 缓冲区和缓存占用 |
 | shared | 共享内存(如 tmpfs) |
- 注意:available比free更真实反映可用量,因 Linux 会将缓存释放后分配给新进程。
 
- 关键指标:
-  扩展参数: - -t:显示 Total 和 OS 可见的总量(排除硬件保留内存)。
- -s:设置刷新间隔(如- free -s 5每 5 秒刷新一次)。
 
 
-  
-  top/htop 命令  - 动态监控:top默认每 3 秒刷新,按q退出;htop支持鼠标操作。
- 关键区域: 
    - 顶部摘要:显示 KiB Mem : 923456/1572864 (58%),即已用/总内存。
- 任务列表:按 M键按内存占用排序,快速定位高消耗进程。
 
- 顶部摘要:显示 
- 交互命令: 
    - 1:只显示 CPU 和内存占用最高的进程。
- shift+H(htop):显示线程而非进程。
 
 
- 动态监控:
-  vmstat 命令 - 语法:vmstat -s输出内存相关统计。16789872 K total memory 9452888 K used memory 2345678 K active memory ...
- 核心指标: 
    - used memory:当前已用内存。
- free memory:未分配内存。
- active memory:最近使用的活跃内存。
 
 
- 语法:
-  /proc/meminfo 文件 - 直接查看:cat /proc/meminfoMemTotal: 16384256 kB MemFree: 2345678 kB MemAvailable: 4325678 kB Buffers: 123456 kB Cached: 987654 kB
- 关键字段: 
    - MemAvailable:扣除缓存后可分配内存。
- Buffers:内核缓冲区(如块设备 I/O)。
- Cached:页面缓存(文件系统缓存)。
 
 
- 直接查看:
内存剩余量计算逻辑
| 指标 | 计算公式 | 
|---|---|
| 实际剩余内存 | MemAvailable(可直接用于启动新进程) | 
| 理论最大剩余 | MemFree + Cached + Buffers(需压缩缓存后释放) | 
| 已用内存 | MemTotal MemAvailable | 
示例:若 MemTotal=16G, MemAvailable=4G, 则已用内存为 12G,但部分被缓存占用,实际可立即用的是 4G。

高级监控与自动化
-  实时监控脚本 while true; do date +"%F %T" ; free -h | grep Mem ; echo "---------" sleep 5 done - 输出示例: 2024-07-24 14:00:00 total used free shared buff/cache available Mem: 15G 9G 3G 1.5G 2G 4G ---------
 
- 输出示例: 
-  阈值报警 - Shell 脚本: if [ $(free -m | awk '/^Mem:/ {print $7}') -lt 1000 ]; then echo "内存不足!可用内存:$(free -m | awk '/^Mem:/ {print $7}')MB" | mail -s "内存告警" admin@example.com fi
- 说明:当 available低于 1G 时发送邮件告警。
 
- Shell 脚本: 
-  集成监控工具  - Prometheus + Grafana:通过 node_exporter采集MemAvailable等指标,可视化历史趋势。
- 自定义埋点:在应用中嵌入内存检测逻辑(如 Python 的 psutil.virtual_memory())。
 
- Prometheus + Grafana:通过 
常见问题解答(FAQs)
-  问:为什么 free显示可用内存很低,但系统仍流畅?
 答:Linux 采用惰性缓存机制,used包含文件系统缓存和应用程序缓存,当新进程需要内存时,系统会自动释放缓存,因此即使free中的available较低,也不一定影响性能,建议关注available而非free。
-  问:如何强制清除缓存以释放内存? 
 答:可使用echo 3 > /proc/sys/vm/drop_caches(需 root 权限),但此操作通常无需手动执行:- 参数含义: 
    - 1:清除页面缓存。
- 2:清除目录项和 inode 缓存。
- 3:两者全清。
 
- 警告:频繁清理缓存可能导致性能下降,因系统需重新加载常用数据。
 
- 参数含义: 
    
| 工具 | 适用场景 | 输出特点 | 
|---|---|---|
| free | 快速查看总量 | 简洁,支持单位转换 | 
| top/htop | 实时监控进程 | 动态排序,定位高耗进程 | 
| vmstat | 系统资源综合分析 | 包含内存、交换、 I/O 等指标 | 
| /proc/meminfo | 精准获取原始数据 | 详细但需过滤无关字段 | 
通过组合使用上述工具,可全面掌握内存使用状态,建议优先关注 MemAvailable 和 available 字段,避免误判缓存占用导致的“假缺内存”。
 
  
			 
			