在當今資訊快速發展的時代,伺服器系統的穩定性越來越受到關注。而記憶體作為伺服器中的關鍵部分,經常成為系統效能問題的瓶頸。在這種情況下,即時監控記憶體使用情況,對於確保系統的穩定性和效能方面有著至關重要的作用。本文將介紹如何在 Linux 系統中監控記憶體使用情況,並透過一些實用的命令來即時掌握系統的運作狀態。
我將在 Ubuntu 18.04 伺服器平台[1]上進行演示,但是你應該在你選擇的發行版中找到對應的所有命令。更棒的是,你不需要安裝任何東西(因為大多數這些工具都包含在 Linux 系統中)。
話雖如此,讓我們開始工作吧。
top
我想從最常用的工具開始。 top 指令提供正在運行的系統的即時動態視圖,它檢查每個進程的記憶體使用情況。這非常重要,因為你可以輕鬆地看到同一命令的多個範例消耗不同的記憶體量。雖然你無法在沒有顯示器的伺服器上看到這種情況,但是你已經注意到打開 Chrome 使你的系統速度變慢了。執行 top 指令以查看 Chrome 有多個進程正在執行(每個分頁一個 – 圖 1)。
圖1:top 指令中出現多個 Chrome 進程。
Chrome 並不是唯一顯示多個進程的應用程式。你看到圖 1 的 Firefox 了嗎?那是 Firefox 的主進程,而 Web Content 進程是其開啟的標籤。在輸出的頂部,你將看到系統統計資訊。在我的機器上(System76 Leopard Extreme[2]),我總共有 16GB 可用 RAM,其中只有超過 10GB 的 RAM 正在使用中。然後,你可以整理該列表,查看每個行程使用的記憶體百分比。
top 最好的地方之一就是發現可能已經失控的服務的進程 ID 號碼(PID)。有了這些 PID,你可以對有問題的任務進行故障排除(或 kill)。
如果你想讓 top 顯示更友善的記憶體訊息,使用指令 top -o %MEM,這會使 top 按進程所用記憶體對所有行程進行排序(圖 2)。
圖 2:在 top 指令中按使用記憶體對進程排序
#top 指令也為你提供有關使用了多少交換空間的即時更新。
free
然而有時候,top 指令可能無法滿足你的需求。你可能只需要查看系統的可用和已使用記憶體。對此,Linux 還有 free 指令。 free 指令顯示:
在終端機視窗中,輸入 free 指令。它的輸出不是即時的,相反,你將獲得的是當前空閒和已使用記憶體的即時快照(圖 3)。
圖 3 :free 指令的輸出簡單明了。
當然,你可以透過新增 -m 選項來讓 free 顯示得更友善一點,就像這樣:free -m。這將顯示記憶體的使用情況,以 MB 為單位(圖 4)。
圖 4:free 指令以更容易閱讀的形式輸出。
當然,如果你的系統是很新的,你會想要使用 -g 選項(以 GB 為單位),例如 free -g。
如果你需要知道記憶體總量,你可以加入 -t 選項,例如:free -mt。這將簡單地計算每列中的記憶體總量(圖 5)。
圖 5:提供你空閒的記憶體欄位。
vmstat
另一個非常方便的工具是 vmstat。這個特殊的命令是一個報告虛擬記憶體統計資訊的小技巧。 vmstat 指令將會報告關於:
使用 vmstat 的最佳方法是使用 -s 選項,如 vmstat -s。這將在單列中報告統計資料(這比預設報告更容易閱讀)。 vmstat 命令將提供比你需要的更多的資訊(圖 6),但更多的總是更好的(在這種情況下)。
圖 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 指令的輸出。
/proc/meminfo
你可能會問自己:「這些指令從哪裡取得這些資訊?」在某些情況下,它們從 /proc/meminfo 檔案中取得。猜到了嗎?你可以使用指令 less /proc/meminfo 直接讀取該檔案。透過使用 less 指令,你可以在長長的輸出中向上和向下滾動,以準確找到你需要的內容(圖 8)。
圖 8:less /proc/meminfo 指令的輸出。
關於 /proc/meminfo 你應該知道:這不是一個真實的檔案。相反 /proc/meminfo 是一個虛擬文件,包含有關係統的即時動態資訊。特別是,你需要檢查以下值:
#如果你想使用 /proc/meminfo,你可以連接 egrep 指令使用它:egrep –color’Mem | Cache | Swap’/proc/meminfo。這將產生一個易於閱讀的列表,其中包含 Mem、 Cache 和 Swap 等內容的條目將是彩色的(圖 9)。
圖 9:讓 /proc/meminfo 更容易閱讀。
無論是個人電腦還是伺服器系統,在使用過程中,記憶體的使用都是不可或缺且需要重視的。本文介紹了一些在 Linux 系統中監控和管理記憶體的實用命令,可以讓我們即時掌握系統的運作狀態,有效避免系統因記憶體問題而出現宕機或其他故障。讓我們深入理解並掌握這些指令,保障設備的安全與效能。
以上是Linux 記憶體監控:即時掌握系統運作狀態的詳細內容。更多資訊請關注PHP中文網其他相關文章!