如何使用 Linux 命令获取使用的内存(RAM 使用)?

cod*_*ogn 35 memory centos cpanel

我正在尝试使用 Linux 命令按百分比检索已用内存(RAM)。我的 cpanel 显示了我需要在特定网页上显示的已用内存。

从论坛中,我发现可以从以下内容中找到正确的内存:

free -m
Run Code Online (Sandbox Code Playgroud)

结果:

-/+ buffers/cache:        492       1555
Run Code Online (Sandbox Code Playgroud)

-/+ 缓冲区/缓存:包含正确的内存使用情况。我不知道如何解析这个信息,或者是否有任何不同的命令来获取按百分比使用的内存。

cas*_*sey 38

这是免费的示例输出:

% free
             total       used       free     shared    buffers     cached
Mem:      24683904   20746840    3937064     254920    1072508   13894892
-/+ buffers/cache:    5779440   18904464
Swap:      4194236        136    4194100
Run Code Online (Sandbox Code Playgroud)

第一行数字 ( Mem:) 列出

  • total 记忆
  • used 记忆
  • free 记忆
  • 的使用 shared
  • 的使用 buffers
  • 使用文件系统缓存 ( cached)

在这一行中used 包括缓冲区和缓存,这会影响免费。这不是您的“真正”空闲内存,因为如果需要满足分配请求,系统将转储缓存。

下一行 ( -/+ buffers/cache:) 为我们提供了实际使用的和空闲的内存,就好像没有缓冲区或缓存一样。

最后一行 ( Swap) 给出了交换内存的使用情况。没有用于交换的缓冲区或缓存,因为将这些东西放在物理磁盘上是没有意义的。

要输出已用内存(减去缓冲区和缓存),您可以使用如下命令:

% free | awk 'FNR == 3 {print $3/($3+$4)*100}'
23.8521
Run Code Online (Sandbox Code Playgroud)

这将抓取第三行并除以 used/total * 100。

对于空闲内存:

% free | awk 'FNR == 3 {print $4/($3+$4)*100}' 
76.0657
Run Code Online (Sandbox Code Playgroud)

  • 严格来说,不,但实际上,是的。实际内存使用量是第二行(使用:20746840),但内存使用量的一部分是缓冲区和缓存,它们只是为了加快系统的响应时间。第三行(使用:5779440)为您提供程序实际使用的内存量,正是这个内存数字决定了您的程序可以分配多少。如果您的目标是从程序实际使用的内容以及您实际可以分配的内容的意义上获得空闲/已用内存,那么是的,第 3 行对您来说是正确的。 (2认同)

Ram*_*esh 10

我将提到如何解析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
Run Code Online (Sandbox Code Playgroud)

现在,让我们看看各种数字实际上代表什么。

1号线

  • 7869表示我的机器可用的内存/物理 RAM。
  • 4402表示我的系统使用的内存/RAM。
  • 3466表示总 RAM 可用且可用于运行新进程。
  • 0 表示共享内存。此列已过时,可能会在未来的免费版本中删除。
  • 208 表示 Linux 中不同应用程序缓冲的总 RAM。
  • 3497表示用于缓存数据以备将来使用的总 RAM。

2号线

-/+ buffers/cache:        696       7173
Run Code Online (Sandbox Code Playgroud)

如何计算 Line2 中得到的值 696 和 7173?

Total used ( 4402 ) - Total buffer RAM ( 208 ) - Total RAM for caching ( 3497 ) 应该构成系统中实际使用的 RAM。它返回697,这是第二行中实际使用的 RAM输出。

现在,Total Available ( 7869 ) - Actual Used ( 696 ) 应该为您提供可用内存,在这种情况下为7173,它也作为第二行的输出获得。


Sim*_*_Me 8

虽然一式两份由@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}'
Run Code Online (Sandbox Code Playgroud)

输出:

used: 82.68%, buffers: 42.81%, swap: 1.27%
Run Code Online (Sandbox Code Playgroud)

  • 仅供参考,我使用这个```used: 96.00%, buffers: 26.53%awk: (FILENAME=- FNR=4) fatal: 除以零尝试得到以下结果`` (4认同)