如何在 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 文件以查看是否有任何可用内存。然后我们了解了两个可以用来监控系统资源的图形工具。