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

linuxopen sourceoperating system

在运行 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

使用 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 实用程序

dmideckod 是一个实用程序,可以打印有关计算机硬件的有用信息。它从 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 type 参数来指定要检查的组件。例如,如果我们想查看 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

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

使用 /proc/meminfo 虚拟文件

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

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

$ cat /proc/meminfo

为了说明"read"实用程序的用法,我们来看一个示例,其中我们想要了解系统的总 RAM 大小。首先,我们需要运行以下命令 -

命令

$ cat /proc/meminfo | head -n 3

输出

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

我们通过"he"(或"header")选项指定行数 (-n),只打印了我们感兴趣的行。大小以千字节为单位打印,这将让我们了解当前占用的空间大小。

假设我们正在编写一个 bash 脚本,需要从 /proc/memfile 文件读取物理 RAM,然后使用 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

输出

总内存:8021048 kB

结论

我们研究了不同的命令行选项和工具,它们可以帮助确定 Linux 系统的物理内存大小。

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

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


相关文章


有用资源