我正在尝试使用 Linux 命令检索已用内存(RAM)的百分比。我的 cpanel 显示已使用的内存,我需要在特定网页上显示它。
从论坛上,我发现正确的记忆可以从以下内容中找到:
free -m
结果:
-/+ buffers/cache: 492 1555
-/+ buffers/cache:包含正确的内存使用情况。我不知道如何解析此信息,或者是否有任何不同的命令来获取已用内存的百分比。
答案1
这是免费的示例输出:
% free
total used free shared buffers cached
Mem: 24683904 20746840 3937064 254920 1072508 13894892
-/+ buffers/cache: 5779440 18904464
Swap: 4194236 136 4194100
第一行数字 ( Mem:
) 列出
total
记忆used
记忆free
记忆- 的用法
shared
- 的用法
buffers
- 使用文件系统缓存 (
cached
)
在这一行used
包括缓冲区和缓存这影响免费。这不是您的“真正的”可用内存,因为如果需要满足分配请求,系统将转储缓存。
下一行 ( -/+ buffers/cache:
) 为我们提供了实际使用的内存和可用内存,就好像没有缓冲区或高速缓存一样。
最后一行 ( Swap
) 给出了交换内存的使用情况。没有用于交换的缓冲区或缓存,因为将这些东西放在物理磁盘上是没有意义的。
要输出已用内存(减去缓冲区和缓存),您可以使用如下命令:
% free | awk 'FNR == 3 {print $3/($3+$4)*100}'
23.8521
这会抓取第三行并除以已用/总计 * 100。
对于空闲内存:
% free | awk 'FNR == 3 {print $4/($3+$4)*100}'
76.0657
答案2
我将提到如何解析free
命令信息。要查找百分比,您可以按照其他 2 个答案中的建议使用。
这已经解释得很清楚了这里。我会尝试根据我的系统中的内容进行解释。
free -m
total used free shared buffers cached
Mem: 7869 4402 3466 0 208 3497
-/+ buffers/cache: 696 7173
Swap: 3999 216 3783
现在,让我们看看各个数字实际上代表什么。
1号线
- 7869指示我的机器可用的内存/物理 RAM。
- 4402指示我的系统使用的内存/RAM。
- 3466指示可用且可用于运行新进程的 RAM 总量。
- 0 表示共享内存。此专栏已过时,可能会在未来的免费版本中删除。
- 208 表示 Linux 中不同应用程序缓冲的 RAM 总量。
- 3497表示用于缓存数据以供将来使用的总 RAM。
2号线
-/+ buffers/cache: 696 7173
如何计算Line2中得到的值696和7173?
已使用总量(4402)--总缓冲 RAM(208)--用于缓存的总 RAM(3497)应构成实际使用的内存在系统中。它返回我第697章哪一个是实际使用的内存输出在第二行。
现在,可用总量(7869)--实际使用(696)应该给你空闲内存这是7173在这种情况下,它也会作为第二行的输出。
答案3
虽然一个复制正如 @szboardstretcher 所指出的,我对解决方案(在原始问题中)的偏好是下面的,特别是因为您想解析到网页。
$ free | awk '/Mem/{printf("used: %.2f%"), $3/$2*100} /buffers\/cache/{printf(", buffers: %.2f%"), $4/($3+$4)*100} /Swap/{printf(", swap: %.2f%"), $3/$2*100}'
输出:
used: 82.68%, buffers: 42.81%, swap: 1.27%
答案4
请注意,free
3.3 及更高版本没有一行-/+ buffers/cache:
,因此旧的答案将不起作用。在 3.3 中,free
比较了“Mem”行中已使用的与可用的。以下内容适用于新旧版本的free
.
free | awk '$1 == "Mem:" {x= $7/($3+$7)*100} $2 == "buffers/cache:" {x= $4/($3+$4)*100} $1 == "Swap:" {print x}'