如何在 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
使用 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 文件来查看是否有可用内存。之后,我们了解了两个可以用来监控系统资源的图形工具。
相关文章
有用资源
linux 参考教程 - 该教程包含有关 linux 的更多信息:https://www.cainiaomax.com/linux/

