溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么在Linux系統(tǒng)中判斷安裝、使用了多少內(nèi)存

發(fā)布時(shí)間:2021-10-23 10:26:57 來源:億速云 閱讀:165 作者:小新 欄目:系統(tǒng)運(yùn)維

這篇文章主要介紹怎么在Linux系統(tǒng)中判斷安裝、使用了多少內(nèi)存,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

在我們開始之前,讓我們先來回顧一些基礎(chǔ)知識(shí)。物理內(nèi)存和虛擬內(nèi)存并不是一回事。后者包括配置為交換空間的磁盤空間。交換空間可能包括為此目的特意留出來的分區(qū),以及在創(chuàng)建新的交換分區(qū)不可行時(shí)創(chuàng)建的用來增加可用交換空間的文件。有些  Linux 命令會(huì)提供關(guān)于兩者的信息。

當(dāng)物理內(nèi)存占滿時(shí),交換空間通過提供可以用來存放內(nèi)存中非活動(dòng)頁的磁盤空間來擴(kuò)展內(nèi)存。

/proc/kcore 是在內(nèi)存管理中起作用的一個(gè)文件。這個(gè)文件看上去是個(gè)普通文件(雖然非常大),但它并不占用任何空間。它就像其他 /proc 下的文件一樣是個(gè)虛擬文件。

$ ls -l /proc/kcore-r--------. 1 root root 140737477881856 Jan 28 12:59 /proc/kcore

有趣的是,下面查詢的兩個(gè)系統(tǒng)并沒有安裝相同大小的內(nèi)存,但 /proc/kcore 的大小卻是相同的。個(gè)系統(tǒng)安裝了 4 GB 的內(nèi)存,而第二個(gè)系統(tǒng)安裝了 6 GB。

system1$ ls -l /proc/kcore-r--------. 1 root root 140737477881856 Jan 28 12:59 /proc/kcoresystem2$ ls -l /proc/kcore-r--------  1 root root 140737477881856 Feb  5 13:00 /proc/kcore

一種不靠譜的解釋說這個(gè)文件代表可用虛擬內(nèi)存的大?。]準(zhǔn)要加 4 KB),如果這樣,這些系統(tǒng)的虛擬內(nèi)存可就是 128TB  了!這個(gè)數(shù)字似乎代表了 64 位系統(tǒng)可以尋址多少內(nèi)存,而不是當(dāng)前系統(tǒng)有多少可用內(nèi)存。在命令行中計(jì)算 128 TB 和這個(gè)文件大小加上 4 KB  很容易。

$ expr 1024 \* 1024 \* 1024 \* 1024 \* 128140737488355328$ expr 1024 \* 1024 \* 1024 \* 1024 \* 128 + 4096140737488359424

另一個(gè)用來檢查內(nèi)存的更人性化的命令是 free。它會(huì)給出一個(gè)易于理解的內(nèi)存報(bào)告。

$ free              total        used        free      shared  buff/cache   availableMem:        6102476      812244     4090752       13112     1199480     4984140Swap:       2097148           0     2097148

使用 -g 選項(xiàng),free 會(huì)以 GB 為單位返回結(jié)果。

$ free -g              total        used        free      shared  buff/cache   availableMem:              5           0           3           0           1           4Swap:             1           0           1

使用 -t 選項(xiàng),free 會(huì)顯示與無附加選項(xiàng)時(shí)相同的值(不要把 -t 選項(xiàng)理解成 TB),并額外在輸出的底部添加一行總計(jì)數(shù)據(jù)。

$ free -t              total        used        free      shared  buff/cache   availableMem:        6102476      812408     4090612       13112     1199456     4983984Swap:       2097148           0     2097148Total:      8199624      812408     6187760

當(dāng)然,你也可以選擇同時(shí)使用兩個(gè)選項(xiàng)。

$ free -tg              total        used        free      shared  buff/cache   availableMem:              5           0           3           0           1           4Swap:             1           0           1Total:            7           0           5

如果你嘗試用這個(gè)報(bào)告來解釋“這個(gè)系統(tǒng)安裝了多少內(nèi)存?”,你可能會(huì)感到失望。上面的報(bào)告就是在前文說的裝有 6 GB 內(nèi)存的系統(tǒng)上運(yùn)行的結(jié)果。這并不是說這個(gè)結(jié)果是錯(cuò)的,這就是系統(tǒng)對(duì)其可使用的內(nèi)存的看法。

free 命令也提供了每隔 X 秒刷新顯示的選項(xiàng)(下方示例中 X 為 10)。

$ free -s 10              total        used        free      shared  buff/cache   availableMem:        6102476      812280     4090704       13112     1199492     4984108Swap:       2097148           0     2097148               total        used        free      shared  buff/cache   availableMem:        6102476      812260     4090712       13112     1199504     4984120Swap:       2097148           0     2097148

使用 -l 選項(xiàng),free 命令會(huì)提供高低內(nèi)存使用信息。

$ free -l              total        used        free      shared  buff/cache   availableMem:        6102476      812376     4090588       13112     1199512     4984000Low:        6102476     2011888     4090588High:             0           0           0Swap:       2097148           0     2097148

查看內(nèi)存的另一個(gè)選擇是 /proc/meminfo 文件。像 /proc/kcore 一樣,這也是一個(gè)虛擬文件,它可以提供關(guān)于安裝或使用了多少內(nèi)存以及可用內(nèi)存的報(bào)告。顯然,空閑內(nèi)存和可用內(nèi)存并不是同一回事。MemFree 看起來代表未使用的 RAM。MemAvailable 則是對(duì)于啟動(dòng)新程序時(shí)可使用的內(nèi)存的一個(gè)估計(jì)。

$ head -3 /proc/meminfoMemTotal: 6102476 kBMemFree: 4090596 kBMemAvailable: 4984040 kB

如果只想查看內(nèi)存總計(jì),可以使用下面的命令之一:

$ awk '/MemTotal/ {print $2}' /proc/meminfo6102476$ grep MemTotal /proc/meminfoMemTotal: 6102476 kB

DirectMap 將內(nèi)存信息分為幾類。

$ grep DirectMap /proc/meminfoDirectMap4k: 213568 kBDirectMap2M: 6076416 kB

DirectMap4k 代表被映射成標(biāo)準(zhǔn) 4 k 頁的內(nèi)存大小,DirectMap2M 則顯示了被映射為 2 MB 的頁的內(nèi)存大小。

getconf 命令將會(huì)提供比我們大多數(shù)人想要看到的更多的信息。

$ getconf -a | moreLINK_MAX 65000_POSIX_LINK_MAX 65000MAX_CANON 255_POSIX_MAX_CANON 255MAX_INPUT 255_POSIX_MAX_INPUT 255NAME_MAX 255_POSIX_NAME_MAX 255PATH_MAX 4096_POSIX_PATH_MAX 4096PIPE_BUF 4096_POSIX_PIPE_BUF 4096SOCK_MAXBUF_POSIX_ASYNC_IO_POSIX_CHOWN_RESTRICTED 1_POSIX_NO_TRUNC 1_POSIX_PRIO_IO_POSIX_SYNC_IO_POSIX_VDISABLE 0ARG_MAX 2097152ATEXIT_MAX 2147483647CHAR_BIT 8CHAR_MAX 127--More--

使用類似下面的命令來將其輸出精簡為指定的內(nèi)容,你會(huì)得到跟前文提到的其他命令相同的結(jié)果。

$ getconf -a | grep PAGES | awk 'BEGIN {total = 1} {if (NR == 1 || NR == 3) total *=$NF} END {print total / 1024" kB"}'6102476 kB

上面的命令通過將下方輸出的行和結(jié)尾一行的值相乘來計(jì)算內(nèi)存。

PAGESIZE                           4096    <==_AVPHYS_PAGES                      1022511_PHYS_PAGES                        1525619 <==

自己動(dòng)手計(jì)算一下,我們就知道這個(gè)值是怎么來的了。

$ expr 4096 \* 1525619 / 10246102476

顯然值得為以上的指令之一設(shè)置個(gè) alias

另一個(gè)具有非常易于理解的輸出的命令是 top 。在 top 輸出的前五行,你可以看到一些數(shù)字顯示多少內(nèi)存正被使用。

$ toptop - 15:36:38 up 8 days, 2:37, 2 users, load average: 0.00, 0.00, 0.00Tasks: 266 total, 1 running, 265 sleeping, 0 stopped, 0 zombie%Cpu(s): 0.2 us, 0.4 sy, 0.0 ni, 99.4 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 stMiB Mem : 3244.8 total, 377.9 free, 1826.2 used, 1040.7 buff/cacheMiB Swap: 3536.0 total, 3535.7 free, 0.3 used. 1126.1 avail Mem

結(jié)尾一個(gè)命令將會(huì)以一個(gè)非常簡潔的方式回答“系統(tǒng)安裝了多少內(nèi)存?”:

$ sudo dmidecode -t 17 | grep "Size.*MB" | awk '{s+=$2} END {print s / 1024 "GB"}'6GB

以上是“怎么在Linux系統(tǒng)中判斷安裝、使用了多少內(nèi)存”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI