如何在bash脚本中获取内存大小(以GB为单位)?

use*_*677 0 bash shell

我需要获取当前机器的内存大小和当前机器使用的内存(以 GB 为单位)。我该怎么做呢?我可以得到以 kB 为单位的内存大小,但是如何以 GB 为单位呢?

RAM = $(grep MemTotal /proc/meminfo)
Run Code Online (Sandbox Code Playgroud)

我需要一个包含总内存的变量和一个包含已用内存的变量。我对这个问题感到抱歉,但我现在正在生命中第一次编辑 bash 脚本 ^^ 感谢您的所有帮助!;)

小智 5

假设您想要 Gibibytes(也就是说,使用 1024 字节表示 Kb,使用 1024 Kb 表示 Mb,等等),您可以自己进行数学计算,但您必须过滤掉原始数字:

RAM_KB=$(grep MemTotal /proc/meminfo | awk '{print $2}')
RAM_MB=$(expr $RAM_KB / 1024)
RAM_GB=$(expr $RAM_MB / 1024)
Run Code Online (Sandbox Code Playgroud)

您可以对已用内存执行基本相同的操作。或者,许多系统都free安装了可以为您执行此数学运算的实用程序:

free -g将提供 GiB 格式的答案:

$ free -g
              total        used        free      shared  buff/cache   available
Mem:             24           0          23           0           1          23
Swap:             7           0           7
Run Code Online (Sandbox Code Playgroud)

您可以使用 grep 和 awk 从那里提取您需要的值:

TOTAL_MEM=$(free -g | grep Mem: | awk '{print $2}')
MEM_USED=$(free -g | grep Mem: | awk '{print $3}')
Run Code Online (Sandbox Code Playgroud)