Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux free 命令詳解:掌握記憶體監控核心技巧

編輯:關於 Linux

在 Linux 系統管理中,free 命令是監控記憶體使用狀況最常用、最基礎的工具之一。許多初學者對其輸出結果感到困惑,特別是「已用」與「可用」記憶體的真實含義。本文將系統整理 free 的參數用法、輸出欄位解讀以及實戰範例,助你精準掌握系統記憶體動態。

命令語法與核心功能

基本格式: free [參數]

核心功能: 顯示系統物理記憶體、交換空間以及核心緩衝區的使用與閒置情況。共享記憶體欄位在現代內核中通常被忽略或整合至其他欄位。

常用參數速查表

參數說明
-b以 Byte(位元組)為單位顯示
-k以 KB 為單位顯示(預設)
-m以 MB 為單位顯示 (推薦日常使用)
-g以 GB 為單位顯示
-h人類可讀格式自動切換單位 (最直觀)
-t顯示總計列
-s 秒數持續監控,每隔指定秒數刷新一次
-o不顯示緩衝區調節列(較舊版本相關)
-V顯示版本資訊

實戰範例與輸出深度解讀

範例 1:以 MB 為單位查看記憶體(最常用)

[root@localhost ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:          32168       30119        2048           0        4438       17584
Swap:         31996        1899       30097

關鍵欄位詳細解釋

  • total:系統識別的物理記憶體總量。
  • used:已被分配給進程或核心使用的記憶體(含緩衝/快取)。
  • free:完全未被使用的記憶體。
  • shared:tmpfs 等共享記憶體大小。
  • buff/cache:核心用於磁碟緩衝與頁面快取的記憶體。這部分在記憶體緊張時可被快速回收供應用程式使用。
  • available:新版核心關鍵指標,估算不觸發交換的情況下,新進程可用的記憶體大小(≈ free + 可回收的 buff/cache)。

第二行:-/+ buffers/cache(舊版輸出)或 available(新版輸出)

舊版 free 會顯示 -/+ buffers/cache 行,其邏輯為:

  • used (調整後) = used - buff/cache → 真正被應用程式佔用的記憶體。
  • free (調整後) = free + buff/cache → 應用程式實際可申請的記憶體。

現代版本直接顯示 available 欄位,含義更準確,建議以此為準。

第三行:Swap 交換空間

  • 持續非零的 si/so(配合 vmstat 觀察)表示頻繁換頁,系統效能將嚴重下降。
  • Swap 佔用率高但系統流暢,通常是因為曾有大型進程運行並釋放記憶體,換出頁面尚未換回,屬正常現象。

進階監控技巧

持續監控記憶體變化

free -h -s 3
# 每 3 秒以人類可讀格式刷新一次,按 Ctrl+C 結束

腳本化提取關鍵指標

# 取得可用記憶體 (MB)
free -m | awk '/^Mem:/ {print $7}'

# 計算記憶體使用率 (%)
free | awk '/^Mem:/ {printf("%.1f%%\n", ($3/$2)*100)}'

常見誤區與最佳實踐

  1. 誤區:看到 free 很小就以為記憶體不足。真相:Linux 會積極利用閒置記憶體做快取,available 才是關鍵。
  2. 誤區:Swap 被使用就代表記憶體不夠。真相:偶爾使用 Swap 正常;持續高頻率換頁才危險。
  3. 最佳實踐:搭配 vmstat、top/htop 綜合分析,建立基準線,設定告警閾值(如 available < 10% 總量或 swap 頻繁讀寫)。
  4. free命令輸出示例

    掌握 free 命令,是 Linux 效能調優與故障排查的入門必修課。善用 free -h 快速掌握全局,結合 available 指標做精準決策,讓記憶體管理不再盲目。

Copyright © Windows教程網 All Rights Reserved