6個例子讓初學者掌握free命令
在 Linux 系統上,有時你可能想從命令行快速地了解系統的已使用和未使用的內存空間。如果你是一個 Linux 新手,有個好消息:有一條系統內置的命令可以顯示這些信息:free
。
在本文中,我們會講到 free 命令的基本用法以及它所提供的一些重要的功能。文中提到的所有命令和用法都是在 Ubuntu 16.04LTS 上測試過的。
Linux free 命令
讓我們看一下 free
命令的語法:
free [options]
free 命令的 man 手冊如是說:
free
命令顯示了系統的可用和已用的物理內存及交換內存的總量,以及內核用到的緩存空間。這些信息是從/proc/meminfo
中得到的。
接下來我們用問答的方式了解一下 free
命令是怎么工作的。
Q1. 怎么用 free 命令查看已使用和未使用的內存?
這很容易,您只需不加任何參數地運行 free
這條命令就可以了:
free
這是 free
命令在我的系統上的輸出:
view used and available memory using free command
這些列是什么意思呢?
total
- 安裝的內存的總量(等同于/proc/meminfo
中的MemTotal
和SwapTotal
)used
- 已使用的內存(計算公式為:used
=total
-free
-buffers
-cache
)free
- 未被使用的內存(等同于/proc/meminfo
中的MemFree
和SwapFree
)shared
- 通常是臨時文件系統使用的內存(等同于/proc/meminfo
中的Shmem
;自內核 2.6.32 版本可用,不可用則顯示為0
)buffers
- 內核緩沖區使用的內存(等同于/proc/meminfo
中的Buffers
)cache
- 頁面緩存和 Slab 分配機制使用的內存(等同于/proc/meminfo
中的Cached
和Slab
)buff/cache
-buffers
與cache
之和available
- 在不計算交換空間的情況下,預計可以被新啟動的應用程序所使用的內存空間。與cache
或者free
部分不同,這一列把頁面緩存計算在內,并且不是所有的可回收的 slab 內存都可以真正被回收,因為可能有被占用的部分。(等同于/proc/meminfo
中的MemAvailable
;自內核 3.14 版本可用,自內核 2.6.27 版本開始模擬;在其他版本上這個值與free
這一列相同)
Q2. 如何更改顯示的單位呢?
如果需要的話,你可以更改內存的顯示單位。比如說,想要內存以兆為單位顯示,你可以用 -m
這個參數:
free -m
free command display metrics change
同樣地,你可以用 -b
以字節顯示、-k
以 KB 顯示、-m
以 MB 顯示、-g
以 GB 顯示、--tera
以 TB 顯示。
Q3. 怎么顯示可讀的結果呢?
free
命令提供了 -h
這個參數使輸出轉化為可讀的格式。
free -h
用這個參數,free
命令會自己決定用什么單位顯示內存的每個數值。例如:
diplsy data fromm free command in human readable form
Q4. 怎么讓 free 命令以一定的時間間隔持續運行?
您可以用 -s
這個參數讓 free
命令以一定的時間間隔持續地執行。您需要傳遞給命令行一個數字參數,做為這個時間間隔的秒數。
例如,使 free
命令每隔 3 秒執行一次:
free -s 3
如果您需要 free
命令只執行幾次,您可以用 -c
這個參數指定執行的次數:
free -s 3 -c 5
上面這條命令可以確保 free
命令每隔 3 秒執行一次,總共執行 5 次。
注:這個功能目前在 Ubuntu 系統上還存在 問題,所以并未測試。
Q5. 怎么使 free 基于 1000 計算內存,而不是 1024?
如果您指定 free
用 MB 來顯示內存(用 -m
參數),但又想基于 1000 來計算結果,可以用 --sj
這個參數來實現。下圖展示了用與不用這個參數的結果:
How to make free use power of 1000 \(not 1024\) while displaying memory figures
Q6. 如何使 free 命令顯示每一列的總和?
如果您想要 free
命令顯示每一列的總和,你可以用 -t
這個參數。
free -t
如下圖所示:
How to make free display total of columns
請注意 Total
這一行出現了。
總結
free
命令對于系統管理來講是個極其有用的工具。它有很多參數可以定制化您的輸出,易懂易用。我們在本文中也提到了很多有用的參數。練習完之后,請您移步至 man 手冊了解更多內容。