如何在 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

使用 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+ 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告