首页 > 解决方案 > 如何在 bash 脚本中以 gb 为单位获取 ram 大小?

问题描述

我需要获取当前机器的内存大小和当前机器的已用内存,以 gb 为单位。我该怎么做呢?我可以以 kB 为单位获取 ram 大小,但如何以 gb 为单位?

RAM = $(grep MemTotal /proc/meminfo)

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

标签: bashshell

解决方案


假设您想要 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)

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

free -g将在 GiB 中提供答案:

$ free -g
              total        used        free      shared  buff/cache   available
Mem:             24           0          23           0           1          23
Swap:             7           0           7

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

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

推荐阅读