如何看linux剩余内存

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

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

如何看linux剩余内存

核心命令行工具

  1. 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) |
      • 注意availablefree 更真实反映可用量,因 Linux 会将缓存释放后分配给新进程。
    • 扩展参数

      • -t:显示 Total 和 OS 可见的总量(排除硬件保留内存)。
      • -s:设置刷新间隔(如 free -s 5 每 5 秒刷新一次)。
  2. top/htop 命令

    • 动态监控top 默认每 3 秒刷新,按 q 退出;htop 支持鼠标操作。
    • 关键区域
      • 顶部摘要:显示 KiB Mem : 923456/1572864 (58%),即已用/总内存。
      • 任务列表:按 M 键按内存占用排序,快速定位高消耗进程。
    • 交互命令
      • 1:只显示 CPU 和内存占用最高的进程。
      • shift+H(htop):显示线程而非进程。
  3. vmstat 命令

    如何看linux剩余内存

    • 语法vmstat -s 输出内存相关统计。
        16789872 K total memory
         9452888 K used memory
         2345678 K active memory
          ...
    • 核心指标
      • used memory:当前已用内存。
      • free memory:未分配内存。
      • active memory:最近使用的活跃内存。
  4. /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. 实时监控脚本

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

    如何看linux剩余内存

    • 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 精准获取原始数据 详细但需过滤无关字段

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

原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/75912.html

(0)
酷盾叔的头像酷盾叔
上一篇 2025年7月24日 12:52
下一篇 2025年7月24日 12:58

相关推荐

  • Linux怎么重命名文件?

    Linux中更改文件名主要使用mv命令,基本语法为:mv 旧文件名 新文件名,该命令也可用于移动文件位置或同时重命名多个文件。

    2025年6月16日
    300
  • 如何在 Linux 中关闭 HSTS?

    在 Linux 系统中关闭 HSTS 主要针对浏览器:进入浏览器设置(如 Chrome 的 chrome://net-internals/#hsts 或 Firefox 的隐私与安全设置),删除特定域名的 HSTS 策略或清除浏览数据中的 HSTS 信息即可临时禁用。

    2025年7月4日
    100
  • 如何让linux支持asp

    Linux支持ASP,可通过安装Chilisoft ASP、Instant ASP或Apache::ASP等模块来实现

    2025年7月13日
    100
  • linux如何搜索目录

    Linux中,可使用find命令搜索目录,如find /path/to/search -type d -name directory_name,/path/to/search为搜索起始路径,directory_name`为要查找的目录名

    2025年7月21日
    000
  • Linux如何挂载新硬盘?

    在Linux中创建新硬盘需三步:首先用fdisk或parted对磁盘分区,然后使用mkfs命令(如mkfs.ext4)格式化分区,最后通过mount命令将分区挂载到目录即可使用。

    2025年7月4日
    000

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN