当前位置:首页 > Linux > 正文

如何看linux剩余内存

在 Linux中,使用 free -h命令可查看剩余内存,-h`表示以人类可读的GB/MB格式显示

Linux 系统中,监控剩余内存是保障系统稳定运行的重要操作,以下是多种查看内存剩余量的方法及详细解析:

核心命令行工具

  1. free 命令

    • 基础用法:free -h(-h 表示以人类可读的 MB/GB 为单位)

      如何看linux剩余内存 第1张

      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 命令

              如何看linux剩余内存 第2张

              • 语法:vmstat -s 输出内存相关统计。 16789872 K total memory 9452888 K used memory 2345678 K active memory ...
              • 核心指标
                • used memory:当前已用内存。
                • free memory:未分配内存。
                • active memory:最近使用的活跃内存。
                • /proc/meminfo 文件

                  • 直接查看:cat /proc/meminfo MemTotal: 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。

                      高级监控与自动化

                      1. 实时监控脚本

                        如何看linux剩余内存 第3张

                        • 输出示例: 2024-07-24 14:00:00 total used free shared buff/cache available Mem: 15G 9G 3G 1.5G 2G 4G ---------
                      2. 阈值报警

                        • 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 时发送邮件告警。
                        • 集成监控工具

                          • Prometheus + Grafana:通过 node_exporter 采集 MemAvailable 等指标,可视化历史趋势。
                          • 自定义埋点:在应用中嵌入内存检测逻辑(如 Python 的 psutil.virtual_memory())。
                          • 常见问题解答(FAQs)

                            1. 问:为什么 free 显示可用内存很低,但系统仍流畅?

                              答:Linux 采用惰性缓存机制,used 包含文件系统缓存和应用程序缓存,当新进程需要内存时,系统会自动释放缓存,因此即使 free 中的 available 较低,也不一定影响性能,建议关注 available 而非 free。

                            2. 问:如何强制清除缓存以释放内存?

                              答:可使用 echo 3 > /proc/sys/vm/drop_caches(需 root 权限),但此操作通常无需手动执行:

                              • 参数含义
                                • 1:清除页面缓存。
                                • 2:清除目录项和 inode 缓存。
                                • 3:两者全清。
                              • 警告:频繁清理缓存可能导致性能下降,因系统需重新加载常用数据。
                            工具 适用场景 输出特点
                            free 快速查看总量 简洁,支持单位转换
                            top/htop 实时监控进程 动态排序,定位高耗进程
                            vmstat 系统资源综合分析 包含内存、交换、 I/O 等指标
                            /proc/meminfo 精准获取原始数据 详细但需过滤无关字段

                            通过组合使用上述工具,可全面掌握内存使用状态,建议优先关注 MemAvailable 和 available 字段,避免误判缓存占用导致的“假缺内存”。

0