CentOS里查看内存的使用

本文解析了CentOS系统中如何利用free命令查看内存使用情况,并详细解释了buffers与cache的作用及如何正确评估系统内存使用率。

CentOS里查看内存的使用 

 Linux里一般使用free命令查看内存的使用情况,加参数-m表示以Mb为单位来显示内容。这个内容其实是有一些讲究的。如下图:

  显示内容分三行N列,第一行表示内存总体的使用情况,第二行表示内存-/+ buffers/cache后的使用情况,第三行表示交换分区的使用情况;各列又显示了内存在每个类别上的使用情况,total列表示总的内存数,used列表示已使用的内存数...诸如此类。
  我们需要重点关注的是第二行。
  第二行used列中的2564,意思是已使用的内存数-buffers-cache后的内存,(即每一行中的used-buffers-cache)
  第二行free列中的1388,表示可用内存数+buffers+cache后的内存,(即第一行中的free+buffers+cache)
  所以,服务器实际使用的内存是2564M,还没有被使用的内存为1388M
  为什么这么说?我们知道buffer和cache是linux中的缓存技术,这两种缓存有什么区别,我也不是很清楚,只要知道它们都是用来做缓存使用的就可以了。第一行中各列的内存数,是系统反映出来的,而对于系统来说,buffer和cache都是已经分配出去的内存,所以属于used(已经使用);第二行中各列的内存则不然,它们是-/+ buffer/cache后的内存数,对于程序而言,buffer和cache都是可以使用的内存,因为它们原来就是设计成预先分配的用以提高性能的内存,所以它们都是可用的即free。
  所以,第一行的used-buffer-cache,得出第二行used列中的数字,它才是程序实际使用的内存;而第一行的free+buffer+cache,得出第二行free列中的数字,它是程序可以使用的内存。

 

<think>根据提供的引用内容,用户想知道在CentOS 7系统中查看内存使用率的命令。引用中提到了使用free命令的不同选项,以及如何计算内存使用率。 从引用[1]中,我们可以看到free命令的常用选项,例如: - `-b`:以字节为单位 - `-k`:以KB为单位 - `-m`:以MB为单位(默认) - `-g`:以GB为单位 - `-t`:在最后一行显示总计 - `-s`:周期性显示 - `-c`:指定次数 - `-h`:人类可读格式 引用[2]给出了内存占用率的计算公式:`(total - available) / total`。其中,`total`是总内存,`available`是可用内存。 引用[4]提供了一个更详细的公式:`(dwMemTotal - (dwMemUsed - dwCached - dwBuffers)) / dwMemTotal`,但实际计算中,更常用的是基于`available`的值。 在CentOS 7中,推荐使用`free -h`命令查看内存使用情况,然后根据输出计算内存使用率。 计算步骤: 1. 运行`free -m`或`free -h`(以人类可读格式显示) 2. 在输出中找到`total`和`available`的值(单位要一致) 3. 使用公式:内存使用率 = (total - available) / total * 100% 例如,从引用[2]的例子中: - total = 941 MB - available = 117 MB - 使用率 = (941 - 117) / 941 * 100% ≈ 87.5% 因此,查看内存使用率的命令和计算步骤如下: ```bash # 使用free命令查看内存情况 free -h # 或者使用free -m以MB为单位查看 free -m ``` 然后根据输出结果计算: - 内存使用率 = (总内存 - 可用内存) / 总内存 * 100% 另外,也可以使用一行命令计算并显示内存使用率(以百分比形式): ```bash free | awk '/Mem/{printf("内存使用率: %.2f%"), $3/$2*100}' ``` 或者更精确地使用`available`来计算(推荐): ```bash free | awk '/Mem/{printf("内存使用率: %.2f%\n"), ($2 - $7) / $2 * 100}' ``` 注意:在free命令的输出中,各列的含义为: - `total`: 总内存 - `used`: 已使用内存 - `free`: 空闲内存 - `shared`: 共享内存 - `buff/cache`: 缓存 - `available`: 可用内存(即应用程序可用内存) 所以,更准确的内存使用率计算应该是:`(total - available) / total * 100%`。 因此,可以这样计算: ```bash free | awk '/Mem/{printf("内存使用率: %.2f%\n"), ($2 - $7) / $2 * 100}' ``` 或者使用更详细的脚本: ```bash free -m | awk 'NR==2{total=$2; avail=$7; printf("内存使用率: %.2f%%\n", (total - avail) / total * 100)}' ``` 总结: 1. 查看内存使用情况:`free -h` 2. 计算内存使用率:`(总内存 - 可用内存) / 总内存 * 100%` 3. 可以用一行命令直接输出使用率 注意:在free命令的输出中,第二行(Mem行)的第七列是available(在CentOS 7中)。所以上面的awk命令中`$7`就是available。 </think>### CentOS 7 查看内存使用率的方法 #### 1. **基础命令:`free`** ```bash free -h # 推荐:人类可读格式(自动转换GB/MB) ``` **输出示例**: ``` total used free shared buff/cache available Mem: 3.7G 1.2G 200M 16M 2.3G 2.1G Swap: 2.0G 0B 2.0G ``` - **关键字段**: - `total`:总内存(3.7GB) - `available`:可用内存(2.1GB),**这是计算使用率的核心指标**[^2][^4] - `used`:已使用内存(包含缓存) #### 2. **精确计算内存使用率** 使用公式: $$ \text{内存使用率} = \left(1 - \frac{\text{available}}{\text{total}}\right) \times 100\% $$ **一步计算命令**: ```bash free -t | awk 'NR==2 {printf("内存使用率: %.1f%%\n"), ($2-$7)/$2*100}' ``` **输出示例**: ``` 内存使用率: 43.2% ``` - **原理**:`available` 值更准确反映系统可用内存(排除了缓存占用)[^2][^4] #### 3. **动态监控(每2秒刷新)** ```bash watch -n 2 "free -h | awk 'NR==2 {printf(\"内存使用率: %.1f%%\", (\$2-\$7)/\$2*100)}'" ``` - 按 `Ctrl+C` 退出监控 #### 4. **专业工具** - **`top` 命令**: ```bash top # 动态查看内存占比(按 M 按内存排序) ``` - 显示字段:`%MEM`(进程内存占比)、`RES`(实际用量) - **`htop`(需安装)**: ```bash yum install htop && htop # 更直观的交互式监控 ``` #### 📊 为什么用 `available` 而非 `free`? - `buff/cache`(缓存)会被系统自动释放供程序使用,因此: - **`free` 值**:完全未使用内存(过低不一定是问题) - **`available` 值**:包含可回收缓存的实际可用内存(更真实)[^2][^4] > **最佳实践**:生产环境中优先使用 `free -h` 观察 `available` 值,并用公式 $(1 - \frac{\text{available}}{\text{total}}) \times 100\%$ 计算使用率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值