free:一個在 Linux 中檢查內存使用情況的標準命令

2021-02-14 Linux

我們都知道, IT 基礎設施方面的大多數伺服器(包括世界頂級的超級計算機)都運行在 Linux 平臺上,因為和其他作業系統相比, Linux 更加靈活。有的作業系統對於一些微乎其微的改動和補丁更新都需要重啟,但是 Linux 不需要,只有對於一些關鍵補丁的更新, Linux 才會需要重啟。

Linux 系統管理員面臨的一大挑戰是如何在沒有任何停機時間的情況下維護系統的良好運行。管理內存使用是 Linux 管理員又一個具有挑戰性的任務。free 是 Linux 中一個標準的並且被廣泛使用的命令,它被用來分析內存統計(空閒和已用)。今天,我們將要討論 free 命令以及它的一些有用選項。

推薦文章:

Free 命令是什麼

free 命令能夠顯示系統中物理上的空閒free和已用used內存,還有交換swap內存,同時,也能顯示被內核使用的緩衝buffers和緩存caches。這些信息是通過解析文件 /proc/meninfo 而收集到的。

顯示系統內存

不帶任何選項運行 free 命令會顯示系統內存,包括空閒free、已用used、交換swap、緩衝buffers、緩存cached和交換swap的內存總數。

# free

            total       used       free     shared    buffers     cached

Mem:      32869744   25434276    7435468          0     412032   23361716

-/+ buffers/cache:    1660528   31209216

Swap:      4095992          0    4095992

輸出有三行:

以 MB 為單位顯示系統內存

默認情況下, free 命令以 KB - Kilobytes 為單位輸出系統內存,這對於絕大多數管理員來說會有一點迷糊(當系統內存很大的時候,我們中的許多人需要把輸出轉化為以 MB 為單位,從而才能夠理解內存大小)。為了避免這個迷惑,我們在 free 命令後面加上 -m 選項,就可以立即得到以 MB - Megabytes為單位的輸出。

# free -m

            total       used       free     shared    buffers     cached

Mem:         32099      24838       7261          0        402      22814

-/+ buffers/cache:       1621      30477

Swap:         3999          0       3999

如何從上面的輸出中檢查剩餘多少空閒內存?主要基於已用used和空閒free兩列。你可能在想,你只有很低的空閒內存,因為它只有 10%, 為什麼?

如果你的 Linux 版本是最新的,那麼有一個查看實際空閒內存的選項,叫做可用available ,對於舊的版本,請看顯示 -/+ buffers/cache 那一行對應的空閒(free)一列。

如何從上面的輸出中檢查有多少實際已用內存?基於已用used和空閒free一列。你可能想,你已經使用了超過 95% 的內存。

以 GB 為單位顯示內存

默認情況下, free 命令會以 KB - kilobytes 為單位顯示輸出,這對於大多數管理員來說會有一些迷惑,所以我們使用上面的選項來獲得以 MB - Megabytes 為單位的輸出。但是,當伺服器的內存很大(超過 100 GB 或 200 GB)時,上面的選項也會讓人很迷惑。所以,在這個時候,我們可以在 free 命令後面加上 -g 選項,從而立即得到以 GB - Gigabytes 為單位的輸出。

# free -g

            total       used       free     shared    buffers     cached

Mem:            31         24          7          0          0         22

-/+ buffers/cache:          1         29

Swap:            3          0          3

顯示全部內存行

默認情況下, free 命令的輸出只有三行(內存、緩衝/緩存以及交換)。為了統一以單獨一行顯示(全部(內存+交換)、已用(內存+(已用-緩衝/緩存)+交換)以及空閒(內存+(已用-緩衝/緩存)+交換),在 『free』 命令後面加上 -t 選項。

# free -t

            total       used       free     shared    buffers     cached

Mem:      32869744   25434276    7435468          0     412032   23361716

-/+ buffers/cache:    1660528   31209216

Swap:      4095992          0    4095992

Total:    36965736   27094804   42740676

按延遲運行 free 命令以便更好的統計

默認情況下, free 命令只會顯示一次統計輸出,這是不足夠進一步排除故障的,所以,可以通過添加延遲(延遲是指在幾秒後再次更新)來定期統計內存活動。如果你想以兩秒的延遲運行 free 命令,可以使用下面的命令(如果你想要更多的延遲,你可以按照你的意願更改數值)。

下面的命令將會每 2 秒運行一次直到你退出:

# free -s 2

            total       used       free     shared    buffers     cached

Mem:      32849392   25935844    6913548        188     182424   24632796

-/+ buffers/cache:    1120624   31728768

Swap:     20970492          0   20970492

            total       used       free     shared    buffers     cached

Mem:      32849392   25935288    6914104        188     182424   24632796

-/+ buffers/cache:    1120068   31729324

Swap:     20970492          0   20970492

            total       used       free     shared    buffers     cached

Mem:      32849392   25934968    6914424        188     182424   24632796

-/+ buffers/cache:    1119748   31729644

Swap:     20970492          0   20970492

按延遲和具體次數運行 free 命令

另外,你可以按延遲和具體次數運行 free 命令,一旦達到某個次數,便自動退出。

下面的命令將會每 2 秒運行一次 free 命令,計數 5 次以後自動退出。

# free -s 2 -c 5

            total       used       free     shared    buffers     cached

Mem:      32849392   25931052    6918340        188     182424   24632796

-/+ buffers/cache:    1115832   31733560

Swap:     20970492          0   20970492

            total       used       free     shared    buffers     cached

Mem:      32849392   25931192    6918200        188     182424   24632796

-/+ buffers/cache:    1115972   31733420

Swap:     20970492          0   20970492

            total       used       free     shared    buffers     cached

Mem:      32849392   25931348    6918044        188     182424   24632796

-/+ buffers/cache:    1116128   31733264

Swap:     20970492          0   20970492

            total       used       free     shared    buffers     cached

Mem:      32849392   25931316    6918076        188     182424   24632796

-/+ buffers/cache:    1116096   31733296

Swap:     20970492          0   20970492

            total       used       free     shared    buffers     cached

Mem:      32849392   25931308    6918084        188     182424   24632796

-/+ buffers/cache:    1116088   31733304

Swap:     20970492          0   20970492

人類可讀格式

為了以人類可讀的格式輸出,在 free 命令的後面加上 -h 選項,和其他選項比如 -m 和 -g 相比,這將會更人性化輸出(自動使用 GB 和 MB 單位)。

# free -h

             total        used        free      shared  buff/cache   available

Mem:           2.0G        1.6G        138M         20M        188M        161M

Swap:          2.0G        1.8G        249M

取消緩衝區和緩存內存輸出

默認情況下,緩衝/緩存內存是同時輸出的。為了取消緩衝和緩存內存的輸出,可以在 free 命令後面加上 -w 選項。(該選項在版本 3.3.12 上可用)

注意比較上面有緩衝/緩存的輸出。

# free -wh

             total        used        free      shared     buffers       cache   available

Mem:           2.0G        1.6G        137M         20M        8.1M        183M        163M

Swap:          2.0G        1.8G        249M

顯示最低和最高的內存統計

默認情況下, free 命令不會顯示最低和最高的內存統計。為了顯示最低和最高的內存統計,在 free 命令後面加上 -l 選項。

# free -l

            total       used       free     shared    buffers     cached

Mem:      32849392   25931336    6918056        188     182424   24632808

Low:      32849392   25931336    6918056

High:            0          0          0

-/+ buffers/cache:    1116104   31733288

Swap:     20970492          0   20970492

閱讀關於 free 命令的更過信息

如果你想了解 free 命令的更多可用選項,只需查看其 man 手冊[3]。

# free --help

or

# man free

via: http://www.2daygeek.com/free-command-to-check-memory-usage-statistics-in-linux/

作者:MAGESH MARUTHAMUTHU[4] 譯者:ucasFL 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

貢獻時間:2016-9-14 -> 2017-3-14

[1]: smem – Linux 下基於進程和用戶的內存佔用報告 - https://linux.cn/article-7681-1.html

[2]: vmstat:一個標準的報告虛擬內存統計工具 - https://linux.cn/article-8157-1.html

[3]: man 手冊 - https://linux.cn/man/man1/free.1.html

[4]: MAGESH MARUTHAMUTHU - http://www.2daygeek.com/author/magesh/

相關焦點

  • 檢測Linux內存使用情況的free命令的10個
    確定物理內存和交換內存所有可用空間的最重要、也是唯一的方法是使用「free」命令。Linux 「free」命令可以給出類Linux/Unix作業系統中物理內存和交換內存的總使用量、可用量及內核使用的緩衝區情況。這篇文章提供一些各種參數選項的「free」命令,這些命令對於你更好地利用你的內存會有幫助。
  • 檢查Linux系統內存及其使用情況的命令
    →「設為星標」  資訊丨乾貨丨入群 聯繫小E微信:SPOTO123456有許多辦法可以獲得Linux系統上所安裝內存的信息,並查看其中有多少內存正在使用中。有的命令會展示大量的細節,而有的命令則提供了簡潔(但不一定容易理解)的結果。在這篇文章中將介紹一些更有用的工具,幫助你檢查內存及其使用情況。
  • 用以檢查 Linux 內存使用的 5 個命令 | Linux 中國
    首先,你在某些時候不得不使用沒有 GUI 的 Linux 伺服器。其次,命令行工具通常比 GUI 替代工具提供更多的功能和靈活性。確定內存使用情況是你可能需要的技能,尤其是某個應用程式變得異常和佔用系統內存時。當發生這種情況時,知道有多種工具可以幫助你進行故障排除十分方便的。或者,你可能需要收集有關 Linux 交換分區的信息,或者有關安裝的內存的詳細信息?對於這些也有相應的命令。
  • Linux free 命令 - 顯示系統中空閒和已使用的內存
    其中一個重要的部分就是內存。當伺服器內存使用率過高時,它會降低伺服器的性能。Linux有一個稱為 free 的工具,來監控內存使用率。free 命令是什麼free 命令是一個顯示系統中空閒和已用內存大小的工具。free 命令的輸出和 top 命令相似。大多數Linux發行版已經含有 free 命令。
  • 在Linux中檢查可用內存的5種方法
    本文解釋了使用以下5個命令來檢查可用內存:free命令vmstat命令/proc/meminfo命令top命令htop命令通過使用這些命令,您始終可以確保有足夠的內存資源用於伺服器上運行的非常重要的進程。例如,如果您正在運行Web伺服器,則可以確保缺少資源不會降低網站訪問速度,或者網站不會完全停止運行。
  • 每天一個 Linux 命令(45):free 命令
    命令可以顯示Linux系統中空閒的、已用的物理內存及swap內存,及被內核使用的buffer。在Linux系統監控的工具中,free命令是最經常使用的命令之一。1.命令格式:free [參數]2.命令功能:free 命令顯示系統使用和空閒的內存情況,包括物理內存、交互區內存(swap)和內核緩衝區內存。
  • Linux下查看內存的使用情況
    我想監視Linux系統的內存使用情況,在Linux下有哪些視圖或者命令行工具可用呢?在做Linux系統優化的時候,物理內存是其中最重要的一方面。自然的,Linux也提供了非常多的方法來監控寶貴的內存資源的使用情況。
  • linux命令free詳解
    那就是說:buffers是用來存儲,目錄裡面有什麼內容,權限等等。而cached直接用來記憶我們打開的文件,如果你想知道他是不是真的生效,你可以試一下,先後執行兩次命令#man X ,你就可以明顯的感覺到第二次的開打的速度快很多。實驗:在一臺沒有什麼應用的機器上做會看得比較明顯。記得實驗只能做一次,如果想多做請換一個文件名。
  • Linux系統命令 - 查看內存使用情況
    上面的示例中, Mem: 這一行:total 表示總共有 7822MB 的物理內存(RAM),即7.6G。used 表示物理內存的使用量,大約是 322M。free 表示空閒內存;shared 表示共享內存?
  • linux系統下free命令內存計算邏輯
    本篇文章介紹下linux下free命令展示的內存相關計算邏輯。
  • 宋牧春: Linux內核slab內存的越界檢查——SLUB_DEBUG
    slab, slub和slob僅僅是分配內存策略不同。管理的思想基本一致。本篇文章中說的是slub分配器debug原理。但是針對分配器管理的內存,下文統稱為slab緩存池。所以文章中slub和slab會混用,表示同一個意思。註:文章代碼分析基於linux-4.15.0-rc3。
  • 【Linux】命令每日一個:free
    當可用內存少於額定值的時候,就會開會進行交換.如何看額定值: 命令:cat /proc/meminfo 輸出:[root@SF1150 service]# cat /proc/meminfoMemTotal: 32940112 kBMemFree: 2096700 kB
  • Linux下查看內存使用情況方法總結
    在做Linux系統優化的時候,物理內存是其中最重要的一方面。自然的,Linux也提供了非常多的方法來監控寶貴的內存資源的使用情況。下面的清單詳細的列出了Linux系統下通過視圖工具或命令行來查看內存使用情況的各種方法。1./proc/meminfo查看RAM使用情況最簡單的方法是通過 /proc/meminfo。
  • Linux中Tee命令使用實例
    tee命令用於讀取標準輸入的數據,將內容輸出到屏幕,同時保存成文件,並且可以保存到多個文件。
  • 使用dstat檢查Linux系統性能
    想要對Linux系統進行快速性能檢查嗎? 您可能需要查看dstat命令。 Dstat提供了有關Linux系統性能的寶貴見解,幾乎取代了一系列舊工具,如vmstat,netstat,iostat和ifstat,它們具有結合其功能的靈活而強大的命令。使用這一個命令,您可以查看虛擬內存,網絡連接和接口,CPU活動,輸入/輸出設備等。
  • 【玩轉Linux命令】free來了
    在Linux系統中,free命令是我們檢查系統內存情況(包括已使用內存、空閒內存、buffer等等)的一個有力工具,是Linux系統中最常用的命令之一。一、命令格式和參數free命令的格式非常簡單,直接跟參數即可:free命令的參數也比較簡單,常見的有如下的幾種:1.顯示內存使用情況
  • Linux中的可用內存指的是什麼?
    中提供了可用內存MemAvailable值。 kernel 中的available 介紹:http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?
  • linux性能監控:內存監控命令之free命令
    free命令可以顯示當前系統未使用的和已使用的內存數目,還可以顯示被內核使用的內存緩衝區。-b:以Byte為單位顯示內存使用情況; -k:以KB為單位顯示內存使用情況; -m:顯示內存使用信息:命令:    free 輸出:
  • Linux如何查看內存的使用情況?
    本節將介紹幾個系統命令,通過它們,可以快速查看 Linux 系統中內存的使用狀況。Linux查看內存使用情況:free命令free 是監控 Linux 內存使用狀況最常用的命令之一,有關該命令的基本用法,已經在《Linux free命令》一節中做了詳細介紹,所以不再贅述,這裡重點給大家講解如何使用 free 命令查看系統內存的使用情況。
  • Linux free 命令
    是一個很受系統管理員歡迎的命令,它是一個功能強大的工具,他能以一種易讀的方式把內存使用情況展示出來free 展示了系統中空閒和已經使用了的物理內存、交換內存以及內核的緩衝區和頁面緩存,所有展示的信息都是從 /proc/meminfo 文件解析出來的語法free命令的語法如下