如何在 Linux 上查找总物理内存 (RAM) 大小?


在运行 Linux 的服务器上,我们通常可以不用检查总内存使用情况。但是,有时我们可能想知道服务器上可用的总内存。幸运的是,有多种方法可以完成此任务。在本教程中,我将向您展示其中的一些方法。

使用 free 命令

free 是我们遇到的各种命令中最简单的。它用于显示系统当前正在使用的物理和虚拟 RAM (RAM) 量。默认情况下,它输出到标准输出。您可以运行 free 实用程序而不带任何标志,以了解系统当前正在使用多少 RAM。

命令

$ free

输出

total used free shared buff/cache available
Mem: 8021048 1320432 5689744 335556 1010872 6121932
Swap: 0 0 0

我们可以使用 -h 或 --human 标志以人类可读的格式显示输出。

命令

$ free -h

输出

total used free shared buff/cache available
Mem: 7.6Gi 1.3Gi 5.4Gi 318Mi 985Mi 5.8Gi
Swap: 0B 0B 0B

我们总共有 7,600 GB 的 RAM。还有许多其他选项可用于以我们希望打印的格式打印结果。另一个有趣的选项是 -k(千字节)和 -M(兆字节)选项。

$ free -h -s 5

-s 标志表示“秒”,因此在此示例中,free 将每五秒打印一次 RAM 使用情况。您可以按 Ctrl+C 停止程序。

使用 vmstat 命令

当我们运行 vmstat 程序时,它将打印出空闲、缓冲和缓存的内存以及交换空间、CPU、IO 和系统信息。

命令

$ vmstat -w

输出

--procs-- -----------------------memory---------------------- ---swap-- -----
io---- -system-- --------cpu--------
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 5352900 56816 1053708 0 0 162 73 328 1087 18 4 78 0 0

我们对总内存使用情况感兴趣,因此我们需要使用 -s(统计)标志。

命令

$ vmstat -s

输出

8021048 K total memory
1564516 K used memory
305336 K active memory
1962636 K inactive memory
5391588 K free memory
58224 K buffer memory
1006720 K swap cache
0 K total swap
0 K used swap
0 K free swap
76393 non-nice user cpu ticks
5 nice user cpu ticks
14122 system cpu ticks
337834 idle cpu ticks
1790 IO-wait cpu ticks
1463 IRQ cpu ticks
614 softirq cpu ticks
0 stolen cpu ticks
617253 pages paged in
310410 pages paged out
0 pages swapped in
0 pages swapped out
1426200 interrupts
4722588 CPU context switches
1625563254 boot time
1949 forks

输出中的第一行包含可用的物理内存的总字节数。我们可以使用 grep 删除除第一行之外的所有内容。

命令

$ vmstat -s | grep -i 'total memory' | sed 's/ *//'

输出

8021048 K total memory

Learn Linux/Unix in-depth with real-world projects through our Linux/Unix certification course. Enroll and become a certified expert to boost your career.

使用 top 命令

Top 是一种显示有关计算机资源的各种统计信息的工具。您可以通过终端(在 Linux 上)或通过 Windows GUI 运行它。要启动它,请在终端窗口中键入“top”。

命令

$ top

输出

top - 15:18:13 up 57 min, 1 user, load average: 3.40, 3.26, 2.04
Tasks: 138 total, 1 running, 137 sleeping, 0 stopped, 0 zombie
%Cpu(s): 17.2 us, 3.6 sy, 0.0 ni, 77.5 id, 0.3 wa, 0.9 hi, 0.5 si, 0.0 st
MiB Mem : 7833.1 total, 4665.9 free, 1782.3 used, 1384.8 buff/cache
top - 15:18:49 up 57 min, 1 user, load average: 2.61, 3.08, 2.03
Tasks: 138 total, 1 running, 137 sleeping, 0 stopped, 0 zombie
top - 15:18:58 up 58 min, 1 user, load average: 2.45, 3.02, 2.02
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 5324.5 avail Mem

在顶部,您可以看到计算机的系统信息。您可以看到总共安装了 7833 MB 的 RAM。

dmidecode 实用程序

dmidecod 是一种打印出有关计算机硬件的有用信息的实用程序。它从 DMI 表(UEFI 固件的一部分)中提取相关信息。您还可以使用它来获取有关系统的一些有趣信息,例如其最大支持的 RAM 大小。

安装 dmidecode

在某些 Linux 发行版中,dmidecke 并非默认安装,因此我们需要先下载并编译它。我们可以使用 apt-get 命令从我们的发行版存储库获取 dmidecke。

要为基于 Ubuntu 的发行版安装软件,我们可以使用命令行工具“apt” -

# apt install dmidecode

要安装 Red Hat Enterprise Linux (RHEL)、Fedora 或 CentOS,我们可以使用 YUM -

# yum install dmidecode

在 Arch 派生发行版上,只需键入“pacman” -

# pacman -Sy dmidecode

使用 dmidecode 实用程序

安装软件包后,我们可以从终端运行 `dmidecode` 命令。

# dmidecode

要访问可用命令的完整列表,我们需要具有 root 权限。一旦我们运行 dmidecode 命令,我们将能够查看有关我们系统的详细信息。但是,我们只关注一条信息——计算机上安装的 RAM 总量。

我们可以使用 -t 类型参数来指定我们想要检查的组件。例如,如果我们想查看 CPU 的温度读数,我们将运行 dmidecode -t 4。

我们有兴趣查看内存 DMI 类型,可以使用数字 5、6、16、17、18、19、20、21、22 找到。但是,我们对编号为 19 的那个感兴趣,它将向我们显示连接到我们主板上的插槽上的 RAM 设备。

# dmidecode --type 19

命令

# dmidecode 3.3

输出

Getting SMBIOS data from sysfs.
SMBIOS 3.0.0 present.

Handle 0x0049, DMI type 19, 31 bytes
Memory Array Mapped Address
   Starting Address: 0x00000000000
   Ending Address: 0x001FFFFFFFF
   Range Size: 8 GB
   Physical Array Handle: 0x0044
   Partition Width: 1

我们只有一个 RAM 模块,在一个 RAM 插槽中可用的总内存容量为 8 GB。

使用 /proc/meminfo 虚拟文件

/proc 文件夹是一种特殊类型的文件系统,包含有关计算机的虚拟信息。您可以通过命令行查看这些虚拟文件夹,但不能直接修改它们。它们在硬盘上并不实际存在,因此您无法删除或创建新的文件夹。但是,您可以打开它们并查看它们包含的内容。要进入 /proc 文件夹,您必须输入以下命令:sudo su -c “cd /proc/”

在 /proc 目录中,有一个名为 meminfofile 的特殊虚拟文件夹,可以通过在终端中键入 cat 来打开它。它包含有关我们物理内存的信息。让我们使用 cat 打开它 -

$ cat /proc/meminfo

为了说明“读取”实用程序的使用,让我们看一个我们想知道系统总 RAM 大小的示例。首先,我们需要运行以下命令 -

命令

$ cat /proc/meminfo | head -n 3

输出

MemTotal: 8021048 kB
MemFree: 4542960 kB
MemAvailable: 5155668 kB

我们通过在 'he'(或 'header')选项的帮助下指定行数 (-n) 来仅打印我们感兴趣的行。大小以千字节为单位打印出来,这将使我们了解我们当前占用了多少空间。

假设我们正在尝试编写一个 bash 脚本,我们需要从中读取物理 RAM /proc/memfile 文件,然后使用 grep 获取总内存。

#!/bin/bash
total_ram () {
   local totalram=$(cat /proc/meminfo | grep -i 'memtotal' | grep -o '[[:digit:]]*')
   echo $totalram
}
ram_size=$(total_ram)
echo "Total RAM: $ram_size kB"

接下来,我们将保存我们的脚本并使其可执行。

命令

$ chmod +755 totalram.sh $ ./totalram.sh

输出

Total RAM: 8021048 kB

结论

我们查看了不同的命令行选项和工具,这些选项和工具可以帮助确定 Linux 系统的物理 RAM 大小。

我们讨论了最小的 free 空间及其替代 vmstats 命令。然后我们检查了 top 程序以查看各种系统信息。然后我们查看了 dmidescribe 实用程序以及我们如何从其 DMI 表中获取物理内存信息。

之后,我们了解了 /proc 目录是什么以及我们如何读取 mem info 文件以查看是否有任何可用内存。然后我们了解了两个可以用来监控系统资源的图形工具。

更新于: 2022-12-01

3K+ 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告