用以檢查Linux記憶體使用的5個命令

民工哥技術之路發表於2019-03-01

用以檢查Linux記憶體使用的5個命令

對於 Linux 管理員來說,檢查系統記憶體用量是一個重要的技能。Jack 給出瞭解決這個問題的五種不同方式。

Linux 作業系統包含大量工具,所有這些工具都可以幫助你管理系統。從簡單的檔案和目錄工具到非常複雜的安全命令,在 Linux 中沒有多少是你做不了的。而且,儘管普通桌面使用者可能不需要在命令列熟悉這些工具,但對於 Linux 管理員來說,它們是必需的。為什麼?首先,你在某些時候不得不使用沒有 GUI 的 Linux 伺服器。其次,命令列工具通常比 GUI 替代工具提供更多的功能和靈活性。

確定記憶體使用情況是你可能需要的技能,尤其是某個應用程式變得異常和佔用系統記憶體時。當發生這種情況時,知道有多種工具可以幫助你進行故障排除十分方便的。或者,你可能需要收集有關 Linux 交換分割槽的資訊,或者有關安裝的記憶體的詳細資訊?對於這些也有相應的命令。讓我們深入瞭解各種 Linux 命令列工具,以幫助你檢查系統記憶體使用情況。這些工具並不是非常難以使用,在本文中,我將向你展示五種不同的方法來解決這個問題。

我將在 Ubuntu 18.04 伺服器平臺上進行演示,但是你應該在你選擇的發行版中找到對應的所有命令。更妙的是,你不需要安裝任何東西(因為大多數這些工具都包含 Linux 系統中)。

話雖如此,讓我們開始工作吧。

top

我想從最常用的工具開始。top 命令提供正在執行的系統的實時動態檢視,它檢查每個程式的記憶體使用情況。這非常重要,因為你可以輕鬆地看到同一命令的多個示例消耗不同的記憶體量。雖然你無法在沒有顯示器的伺服器上看到這種情況,但是你已經注意到開啟 Chrome 使你的系統速度變慢了。執行 top 命令以檢視 Chrome 有多個程式在執行(每個選項卡一個 - 圖 1)。

圖1:top 命令中出現多個 Chrome 程式。

圖1:top 命令中出現多個 Chrome 程式。

Chrome 並不是唯一顯示多個程式的應用。你看到圖 1 中的 Firefox 了嗎?那是 Firefox 的主程式,而 Web Content 程式是其開啟的選項卡。在輸出的頂部,你將看到系統統計資訊。在我的機器上(System76 Leopard Extreme),我總共有 16GB 可用 RAM,其中只有超過 10GB 的 RAM 正在使用中。然後,你可以整理該列表,檢視每個程式使用的記憶體百分比。

top 最好的地方之一就是發現可能已經失控的服務的程式 ID 號(PID)。有了這些 PID,你可以對有問題的任務進行故障排除(或 kill)。

如果你想讓 top 顯示更友好的記憶體資訊,使用命令 top -o %MEM,這會使 top 按程式所用記憶體對所有程式進行排序(圖 2)。

圖 2:在 top 命令中按使用記憶體對程式排序

圖 2:在 top 命令中按使用記憶體對程式排序

top 命令還為你提供有關使用了多少交換空間的實時更新。

free

然而有時候,top 命令可能不能滿足你的需求。你可能只需要檢視系統的可用和已用記憶體。對此,Linux 還有 free 命令。free 命令顯示:

  • 可用和已使用的實體記憶體總量
  • 系統中交換記憶體的總量
  • 核心使用的緩衝區和快取

在終端視窗中,輸入 free 命令。它的輸出不是實時的,相反,你將獲得的是當前空閒和已用記憶體的即時快照(圖 3)。

圖 3 :free 命令的輸出簡單明瞭。

圖 3 :free 命令的輸出簡單明瞭。

當然,你可以通過新增 -m 選項來讓 free 顯示得更友好一點,就像這樣:free -m。這將顯示記憶體的使用情況,以 MB 為單位(圖 4)。

圖 4:free 命令以一種更易於閱讀的形式輸出。

圖 4:free 命令以一種更易於閱讀的形式輸出。

當然,如果你的系統是很新的,你將希望使用 -g 選項(以 GB 為單位),比如 free -g

如果你需要知道記憶體總量,你可以新增 -t 選項,比如:free -mt。這將簡單地計算每列中的記憶體總量(圖 5)。

圖 5:為你提供空閒的記憶體列。

圖 5:為你提供空閒的記憶體列。

vmstat

另一個非常方便的工具是 vmstat。這個特殊的命令是一個報告虛擬記憶體統計資訊的小技巧。vmstat 命令將報告關於:

  • 程式
  • 記憶體
  • 分頁
  • 阻塞 IO
  • 中斷
  • 磁碟
  • CPU

使用 vmstat 的最佳方法是使用 -s 選項,如 vmstat -s。這將在單列中報告統計資訊(這比預設報告更容易閱讀)。vmstat 命令將提供比你需要的更多的資訊(圖 6),但更多的總是更好的(在這種情況下)。

圖 6:使用 vmstat 命令來檢查記憶體使用情況。

圖 6:使用 vmstat 命令來檢查記憶體使用情況。

dmidecode

如果你想找到關於已安裝的系統記憶體的詳細資訊,該怎麼辦?為此,你可以使用 dmidecode命令。這個特殊的工具是 DMI 表解碼器,它將系統的 DMI 表內容轉儲成人類可讀的格式。如果你不清楚 DMI 表是什麼,那麼可以這樣說,它可以用來描述系統的構成(以及系統的演變)。

要執行 dmidecode 命令,你需要 sudo 許可權。因此輸入命令 sudo dmidecode -t 17。該命令的輸出(圖 7)可能很長,因為它顯示所有記憶體型別裝置的資訊。因此,如果你無法上下滾動,則可能需要將該命令的輸出傳送到一個檔案中,比如:sudo dmidecode -t 17> dmi_infoI,或將其傳遞給 less 命令,如 sudo dmidecode | less

圖 7:dmidecode 命令的輸出。

圖 7:dmidecode 命令的輸出。

/proc/meminfo

你可能會問自己:“這些命令從哪裡獲取這些資訊?”在某些情況下,它們從 /proc/meminfo 檔案中獲取。猜到了嗎?你可以使用命令 less /proc/meminfo 直接讀取該檔案。通過使用 less 命令,你可以在長長的輸出中向上和向下滾動,以準確找到你需要的內容(圖 8)。

圖 8:less /proc/meminfo 命令的輸出。

圖 8:less /proc/meminfo 命令的輸出。

關於 /proc/meminfo 你應該知道:這不是一個真實的檔案。相反 /proc/meminfo 是一個虛擬檔案,包含有關係統的實時動態資訊。特別是,你需要檢查以下值:

  • 全部記憶體(MemTotal
  • 空閒記憶體(MemFree
  • 可用記憶體(MemAvailable
  • 緩衝區(Buffers
  • 檔案快取(Cached
  • 交換快取(SwapCached
  • 全部交換區(SwapTotal
  • 空閒交換區(SwapFree

如果你想使用 /proc/meminfo,你可以連線 egrep 命令使用它:egrep --color'Mem | Cache | Swap'/proc/meminfo。這將生成一個易於閱讀的列表,其中包含 MemCacheSwap 等內容的條目將是彩色的(圖 9)。

圖 9:讓 /proc/meminfo 更容易閱讀。

圖 9:讓 /proc/meminfo 更容易閱讀。

繼續學習

你要做的第一件事就是閱讀每個命令的手冊頁(例如 man topman freeman vmstatman dmidecode)。從命令的手冊頁開始,對於如何在 Linux 上使用一個工具,它總是一個很好的學習方法。

原文:https://linux.cn/article-9907-1.html

用以檢查Linux記憶體使用的5個命令


相關文章