中文字幕亚洲第一精品|精品国产免费一区二区|久久婷婷五月六月综合版|中文字幕熟妇久久久人妻|久久综合精品国产一区无码|国产成人精品永久免费视频|午夜亚洲国产精品理论片a级|久久精品一区二区三区无码护土

 訪問手機(jī)版  

Linux常用命令|Linux培訓(xùn)學(xué)習(xí)|考試認(rèn)證|工資待遇與招聘,認(rèn)準(zhǔn)超級網(wǎng)工!

招聘|合作 登陸|注冊

網(wǎng)絡(luò)工程師培訓(xùn)

當(dāng)前位置:網(wǎng)絡(luò)工程師 > 技術(shù)課程 > linux > 熱點(diǎn)關(guān)注 > linux常用命令

linux下free命令詳解

時間:2019-08-17

linux命令大全_linux命令分類大全_linux命令大全

free 命令顯示系統(tǒng)內(nèi)存的使用情況,包括物理內(nèi)存、交換內(nèi)存(swap)和內(nèi)核緩沖區(qū)內(nèi)存。

如果加上 -h 選項(xiàng),輸出的結(jié)果會友好很多:

有時我們需要持續(xù)的觀察內(nèi)存的狀況linux命令大全,此時可以使用 -s 選項(xiàng)并指定間隔的秒數(shù):

$ free -h -s 3

linux命令分類大全_linux命令大全_linux命令大全

上面的命令每隔 3 秒輸出一次內(nèi)存的使用情況,直到你按下 ctrl + c。

由于 free 命令本身比較簡單,所以本文的重點(diǎn)會放在如何通過 free 命令了解系統(tǒng)當(dāng)前的內(nèi)存使用狀況。

下面先解釋一下輸出的內(nèi)容:

Mem 行(第二行)是內(nèi)存的使用情況。

Swap 行(第三行)是交換空間的使用情況。

total 列顯示系統(tǒng)總的可用物理內(nèi)存和交換空間大小。

used 列顯示已經(jīng)被使用的物理內(nèi)存和交換空間。

linux命令分類大全_linux命令大全_linux命令大全

free 列顯示還有多少物理內(nèi)存和交換空間可用使用。

shared 列顯示被共享使用的物理內(nèi)存大小。

buff/cache 列顯示被 buffer 和 cache 使用的物理內(nèi)存大小。

available 列顯示還可以被應(yīng)用程序使用的物理內(nèi)存大小。

我想只有在理解了一些基本概念之后linux命令大全,上面的輸出才能幫助我們了解系統(tǒng)的內(nèi)存狀況。

先來提一個問題: buffer 和 cache 應(yīng)該是兩種類型的內(nèi)存,但是 free 命令為什么會把它們放在一起呢?要回答這個問題需要我們做些準(zhǔn)備工作。讓我們先來搞清楚 buffer 與 cache 的含義。

buffer 在操作系統(tǒng)中指 buffer cache, 中文一般翻譯為 "緩沖區(qū)"。要理解緩沖區(qū),必須明確另外兩個概念:"扇區(qū)" 和 "塊"。扇區(qū)是設(shè)備的最小尋址單元,也叫 "硬扇區(qū)" 或 "設(shè)備塊"。塊是操作系統(tǒng)中文件系統(tǒng)的最小尋址單元,也叫 "文件塊" 或 "I/O 塊"。每個塊包含一個或多個扇區(qū),但大小不能超過一個頁面,所以一個頁可以容納一個或多個內(nèi)存中的塊。當(dāng)一個塊被調(diào)入內(nèi)存時,它要存儲在一個緩沖區(qū)中。每個緩沖區(qū)與一個塊對應(yīng),它相當(dāng)于是磁盤塊在內(nèi)存中的表示(下圖來自互聯(lián)網(wǎng)):

注意,buffer cache 只有塊的概念而沒有文件的概念,它只是把磁盤上的塊直接搬到內(nèi)存中而不關(guān)心塊中究竟存放的是什么格式的文件。

cache 在操作系統(tǒng)中指 page cache,中文一般翻譯為 "頁高速緩存"。頁高速緩存是內(nèi)核實(shí)現(xiàn)的磁盤緩存。它主要用來減少對磁盤的 I/O 操作。具體地講,是通過把磁盤中的數(shù)據(jù)緩存到物理內(nèi)存中,把對磁盤的訪問變?yōu)閷ξ锢韮?nèi)存的訪問。頁高速緩存緩存的是內(nèi)存頁面。緩存中的頁來自對普通文件、塊設(shè)備文件(這個指的就是 buffer cache 呀)和內(nèi)存映射文件的讀寫。

頁高速緩存對普通文件的緩存我們可以這樣理解:當(dāng)內(nèi)核要讀一個文件(比如/etc/hosts)時,它會先檢查這個文件的數(shù)據(jù)是不是已經(jīng)在頁高速緩存中了。如果在,就放棄訪問磁盤,直接從內(nèi)存中讀取。這個行為稱為緩存命中。如果數(shù)據(jù)不在緩存中,就是未命中緩存,此時內(nèi)核就要調(diào)度塊 I/O 操作從磁盤去讀取數(shù)據(jù)。然后內(nèi)核將讀來的數(shù)據(jù)放入頁高速緩存中。這種緩存的目標(biāo)是文件系統(tǒng)可以識別的文件(比如 /etc/hosts)。

頁高速緩存對塊設(shè)備文件的緩存就是我們在前面介紹的 buffer cahce。因?yàn)楠?dú)立的磁盤塊通過緩沖區(qū)也被存入了頁高速緩存(緩沖區(qū)最終是由頁高速緩存來承載的)。

到這里我們應(yīng)該搞清楚了:無論是緩沖區(qū)還是頁高速緩存,它們的實(shí)現(xiàn)方式都是一樣的。緩沖區(qū)只不過是一種概念上比較特殊的頁高速緩存罷了。

那么為什么 free 命令不直接稱為 cache 而非要寫成 buff/cache? 這是因?yàn)榫彌_區(qū)和頁高速緩存的實(shí)現(xiàn)并非天生就是統(tǒng)一的。在 linux 內(nèi)核 2.4 中才將它們統(tǒng)一。更早的內(nèi)核中有兩個獨(dú)立的磁盤緩存:頁高速緩存和緩沖區(qū)高速緩存。前者緩存頁面,后者緩存緩沖區(qū)。當(dāng)你知道了這些故事之后,輸出中列的名稱可能已經(jīng)不再重要了。