You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下Git Bash执行cat /proc/meminfo无法获取cached等内存信息如何解决

Windows Git Bash 查询缓存/缓冲/共享内存数值的解决方案

问题本质

Windows 下的 Git Bash 基于 MSYS2 仿真层实现,仅提供最基础的 /proc/meminfo 字段,不会模拟 Linux 内核完整的 buffer、cached、shared 内存统计项,因此直接读取 /proc/meminfo 无法拿到目标数据。

你之前写的提取脚本存在语法错误,awk '/^MemFree:{print $2}' 应该修改为 awk '/^MemFree/ {print $2}',但即使修正语法也无法获取三类目标内存数值,因为底层仿真层没有提供对应字段。

可行实现方案

直接调用 Windows 原生系统命令获取内存统计,再通过 Git Bash 的文本处理工具提取数值即可。需要注意:Windows 内存管理逻辑和 Linux 存在差异,不存在完全对等的 buffer memory、shared memory 统计项,以下方案提供近似匹配的取值方法:

1. 单条命令直接查询

  • 查询缓存内存(Cached Memory):
    wmic OS get CachedMemory /value | grep CachedMemory
  • 查询分页缓冲池(对应 Linux buffer 近似值):
    wmic OS get PagedPoolSize /value
  • 查询共享内存页数(对应 Linux shared memory 近似值):
    typeperf "\\Memory\\Shared Pages" -sc 1

2. 封装为脚本批量查询

将以下内容保存为 meminfo.sh,在 Git Bash 中执行 chmod +x meminfo.sh 赋予执行权限,之后运行 ./meminfo.sh 即可输出格式化后的内存数据:

#!/bin/bash
echo "=== 系统内存统计 ==="
# 总物理内存
total_phys=$(wmic OS get TotalVisibleMemorySize /value | awk -F'=' '{print $2}' | sed '/^$/d')
echo "总物理内存:$((total_phys/1024)) MB"
# 可用物理内存
free_phys=$(wmic OS get FreePhysicalMemory /value | awk -F'=' '{print $2}' | sed '/^$/d')
echo "可用物理内存:$((free_phys/1024)) MB"
# 缓存内存(Cached)
cached=$(wmic OS get CachedMemory /value | awk -F'=' '{print $2}' | sed '/^$/d')
echo "缓存内存(Cached):$((cached/1024)) MB"
# 分页缓冲池(Buffer近似值)
buffer_approx=$(wmic OS get PagedPoolSize /value | awk -F'=' '{print $2}' | sed '/^$/d')
echo "缓冲内存(Buffer近似):$((buffer_approx/1024/1024)) MB"
# 共享内存页数(Shared近似值)
shared_approx=$(typeperf "\\Memory\\Shared Pages" -sc 1 2>/dev/null | awk 'NR==3 {print $2}' | sed 's/"//g')
echo "共享内存页数(Shared近似):$shared_approx"

内容的提问来源于stack exchange,提问作者Jd_mahmud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 20:36:02