六月丁香五月婷婷,丁香五月婷婷网,欧美激情网站,日本护士xxxx,禁止18岁天天操夜夜操,18岁禁止1000免费,国产福利无码一区色费

學(xué)習(xí)啦 > 學(xué)習(xí)電腦 > 操作系統(tǒng) > Linux教程 >

linux free命令有什么作用使用教程

時(shí)間: 加城1195 分享

  有用戶問到Linux中free命令有什么用。free 命令顯示系統(tǒng)內(nèi)存的使用情況,包括物理內(nèi)存、交換內(nèi)存(swap)和內(nèi)核緩沖區(qū)內(nèi)存。本篇文章主要介紹了linux free命令詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

  方法步驟

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

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

  $ free -h -s 3

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

  (Ubuntu 16.04 中默認(rèn)的 free 版本有 bug,使用 -s 選項(xiàng)時(shí)報(bào)錯(cuò),所以這張圖是在 CentOS 中截的。)

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

  輸出簡(jiǎn)介

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

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

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

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

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

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

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

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

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

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

  buff/cache

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

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

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

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

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

  頁(yè)高速緩存對(duì)塊設(shè)備文件的緩存就是我們?cè)谇懊娼榻B的 buffer cahce。因?yàn)楠?dú)立的磁盤塊通過緩沖區(qū)也被存入了頁(yè)高速緩存(緩沖區(qū)最終是由頁(yè)高速緩存來承載的)。

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

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

  free 與 available

  在 free 命令的輸出中,有一個(gè) free 列,同時(shí)還有一個(gè) available 列。這二者到底有何區(qū)別?

  free 是真正尚未被使用的物理內(nèi)存數(shù)量。至于 available 就比較有意思了,它是從應(yīng)用程序的角度看到的可用內(nèi)存數(shù)量。Linux 內(nèi)核為了提升磁盤操作的性能,會(huì)消耗一部分內(nèi)存去緩存磁盤數(shù)據(jù),就是我們介紹的 buffer 和 cache。所以對(duì)于內(nèi)核來說,buffer 和 cache 都屬于已經(jīng)被使用的內(nèi)存。當(dāng)應(yīng)用程序需要內(nèi)存時(shí),如果沒有足夠的 free 內(nèi)存可以用,內(nèi)核就會(huì)從 buffer 和 cache 中回收內(nèi)存來滿足應(yīng)用程序的請(qǐng)求。所以從應(yīng)用程序的角度來說,available = free + buffer + cache。請(qǐng)注意,這只是一個(gè)很理想的計(jì)算方式,實(shí)際中的數(shù)據(jù)往往有較大的誤差。

  交換空間(swap space)

  swap space 是磁盤上的一塊區(qū)域,可以是一個(gè)分區(qū),也可以是一個(gè)文件。所以具體的實(shí)現(xiàn)可以是 swap 分區(qū)也可以是 swap 文件。當(dāng)系統(tǒng)物理內(nèi)存吃緊時(shí),Linux 會(huì)將內(nèi)存中不常訪問的數(shù)據(jù)保存到 swap 上,這樣系統(tǒng)就有更多的物理內(nèi)存為各個(gè)進(jìn)程服務(wù),而當(dāng)系統(tǒng)需要訪問 swap 上存儲(chǔ)的內(nèi)容時(shí),再將 swap 上的數(shù)據(jù)加載到內(nèi)存中,這就是常說的換出和換入。交換空間可以在一定程度上緩解內(nèi)存不足的情況,但是它需要讀寫磁盤數(shù)據(jù),所以性能不是很高。

  現(xiàn)在的機(jī)器一般都不太缺內(nèi)存,如果系統(tǒng)默認(rèn)還是使用了 swap 是不是會(huì)拖累系統(tǒng)的性能?理論上是的,但實(shí)際上可能性并不是很大。并且內(nèi)核提供了一個(gè)叫做 swappiness 的參數(shù),用于配置需要將內(nèi)存中不常用的數(shù)據(jù)移到 swap 中去的緊迫程度。這個(gè)參數(shù)的取值范圍是 0~100,0 告訴內(nèi)核盡可能的不要將內(nèi)存數(shù)據(jù)移到 swap 中,也即只有在迫不得已的情況下才這么做,而 100 告訴內(nèi)核只要有可能,盡量的將內(nèi)存中不常訪問的數(shù)據(jù)移到 swap 中。在 ubuntu 系統(tǒng)中,swappiness 的默認(rèn)值是 60。如果我們覺著內(nèi)存充足,可以在 /etc/sysctl.conf 文件中設(shè)置 swappiness:

  vm.swappiness=10

  如果系統(tǒng)的內(nèi)存不足,則需要根據(jù)物理內(nèi)存的大小來設(shè)置交換空間的大小。具體的策略網(wǎng)上有很豐富的資料,這里筆者不再贅述。

  /proc/meminfo 文件

  其實(shí) free 命令中的信息都來自于 /proc/meminfo 文件。/proc/meminfo 文件包含了更多更原始的信息,只是看起來不太直觀:

  $ cat /proc/meminfo

  有興趣的同學(xué)可以直接查看這個(gè)文件。

  補(bǔ)充:Linux基本命令

 ?、賚s 意為list 列出當(dāng)前文件夾中的文件

  -l 顯示文件的屬性 可用ll來表示

 ?、赼lias 別名 看看是否有別名的文件

  ③cd dir 跳躍目錄 -P選項(xiàng) 將路徑中的鏈接文件替換成鏈接指向的文件路徑

 ?、躳wd 查看當(dāng)前工作的文件夾名 使用-P的選項(xiàng),會(huì)直接進(jìn)入到其中,相當(dāng)于cd

  相關(guān)閱讀:Linuxshell腳本不執(zhí)行問題實(shí)例分析

  shell腳本不執(zhí)行問題:某天研發(fā)某同事找我說幫他看看他寫的shell腳本,死活不執(zhí)行,報(bào)錯(cuò)。我看了下,腳本很簡(jiǎn)單,也沒有常規(guī)性的錯(cuò)誤,報(bào)“:badinterpreter:Nosuchfileordirectory”錯(cuò)??催@錯(cuò),我就問他是不是在windows下編寫的腳本,然后在上傳到linux服務(wù)器的……果然。原因:在DOS/windows里,文本文件的換行符為rn,而在*nix系統(tǒng)里則為n,所以DOS/Windows里編輯過的文本文件到了*nix里,每一行都多了個(gè)^M。解決:

  1)重新在linux下編寫腳本;

  2)vi:%s/r//g:%s/^M//g(^M輸入用Ctrl+v,Ctrl+m)附:sh-x腳本文件名,可以單步執(zhí)行并回顯結(jié)果,有助于排查復(fù)雜腳本問題。


Linux free命令相關(guān)文章:

1.Linux系統(tǒng)管理命令大全

2.怎么查看及修改Linux系統(tǒng)文件讀寫權(quán)限

3.linux常用巡檢命令

4.linux中ftp命令找不到的原因和解決方法

5.linux的terminal命令

4016700