Linux重要命令 free

2021-09-25 09:52:07 字數 4922 閱讀 6994

free命令可以顯示linux系統中空閒的、已用的物理記憶體及swap記憶體,及被核心使用的buffer。在linux系統監控的工具中,free命令是最經常使用的命令之一。

1.命令格式:

free [引數]

2.命令功能:

free 命令顯示系統使用和空閒的記憶體情況,包括物理記憶體、互動區記憶體(swap)和核心緩衝區記憶體。共享記憶體將被忽略

3.命令引數:

-b  以byte為單位顯示記憶體使用情況。 

-k  以kb為單位顯示記憶體使用情況。 

-m  以mb為單位顯示記憶體使用情況。

-g   以gb為單位顯示記憶體使用情況。 

-o  不顯示緩衝區調節列。 

-s《間隔秒數》  持續觀察記憶體使用狀況。 

-t  顯示記憶體總和列。 

-v  顯示版本資訊。 

4.使用例項:

例項1:顯示記憶體使用情況

命令:free

free -g

free -m

輸出:[root@sf1150 service]# free

total       used       free     shared    buffers     cached

mem:      32940112   30841684    2098428          0    4545340   11363424

-/+ buffers/cache:   14932920   18007192

swap:     32764556    1944984   30819572

[root@sf1150 service]# free -g

total       used       free     shared    buffers     cached

mem:            31         29          2          0          4         10

-/+ buffers/cache:         14         17

swap:           31          1         29

[root@sf1150 service]# free -m

total       used       free     shared    buffers     cached

mem:         32168      30119       2048          0       4438      11097

-/+ buffers/cache:      14583      17584

swap:        31996       1899      30097

說明:下面是對這些數值的解釋:

total:總計物理記憶體的大小。

used:已使用多大。

free:可用有多少。

shared:多個程序共享的記憶體總額。

buffers/cached:磁碟快取的大小。

第三行(-/+ buffers/cached):

used:已使用多大。

free:可用有多少。

第四行是交換分割槽swap的,也就是我們通常所說的虛擬記憶體。

第三行所指的是從應用程式角度來看,對於應用程式來說,buffers/cached 是等於可用的,因為buffer/cached是為了提高檔案讀取的效能,當應用程式需在用到記憶體的時候,buffer/cached會很快地被**。

所以從應用程式的角度來說,可用記憶體=系統free memory+buffers+cached。

如本機情況的可用記憶體為:

18007156=2098428kb+4545340kb+11363424kb

接下來解釋什麼時候記憶體會被交換,以及按什麼方交換。 

當可用記憶體少於額定值的時候,就會開會進行交換.如何看額定值: 

命令:cat /proc/meminfo 

輸出:[root@sf1150 service]# cat /proc/meminfo

memtotal:     32940112 kb

memfree:       2096700 kb

buffers:       4545340 kb

cached:       11364056 kb

swapcached:    1896080 kb

active:       22739776 kb

inactive:      7427836 kb

hightotal:           0 kb

highfree:            0 kb

lowtotal:     32940112 kb

lowfree:       2096700 kb

swaptotal:    32764556 kb

swapfree:     30819572 kb

dirty:             164 kb

writeback:           0 kb

anonpages:    14153592 kb

slab:           590232 kb

pagetables:      34200 kb

nfs_unstable:        0 kb

bounce:              0 kb

commitlimit:  49234612 kb

committed_as: 23247544 kb

vmalloctotal: 34359738367 kb

vmallocused:    278840 kb

vmallocchunk: 34359459371 kb

hugepages_total:     0hugepages_free:      0hugepages_rsvd:      0hugepagesize:     2048 kb

交換將通過三個途徑來減少系統中使用的物理頁面的個數:  

1.減少緩衝與頁面cache的大小, 

2.將系統v型別的記憶體頁面交換出去,  

事實上,少量地使用swap是不是影響到系統效能的。

那buffers和cached都是快取,兩者有什麼區別呢?

為了提高磁碟訪問效率, linux做了一些精心的設計, 除了對dentry進行快取(用於vfs,加速檔案路徑名到inode的轉換), 還採取了兩種主要cache方式:buffer cache和page cache。前者針對磁碟塊的讀寫,後者針對檔案inode的讀寫。這些cache有效縮短了 i/o系統呼叫(比如read,write,getdents)的時間。

磁碟的操作有邏輯級(檔案系統)和物理級(磁碟塊),這兩種cache就是分別快取邏輯和物理級資料的。

page cache實際上是針對檔案系統的,是檔案的快取,在檔案層面上的資料會快取到page cache。檔案的邏輯層需要對映到實際的物理磁碟,這種對映關係由檔案系統來完成。當page cache的資料需要重新整理時,page cache中的資料交給buffer cache,因為buffer cache就是快取磁碟塊的。但是這種處理在2.6版本的核心之後就變的很簡單了,沒有真正意義上的cache操作。

buffer cache是針對磁碟塊的快取,也就是在沒有檔案系統的情況下,直接對磁碟進行操作的資料會快取到buffer cache中,例如,檔案系統的元資料都會快取到buffer cache中。

簡單說來,page cache用來快取檔案資料,buffer cache用來快取磁碟資料。在有檔案系統的情況下,對檔案操作,那麼資料會快取到page cache,如果直接採用dd等工具對磁碟進行讀寫,那麼資料會快取到buffer cache。

所以我們看linux,只要不用swap的交換空間,就不用擔心自己的記憶體太少.如果常常swap用很多,可能你就要考慮加物理記憶體了.這也是linux看記憶體是否夠用的標準.

如果是應用伺服器的話,一般只看第二行,+buffers/cache,即對應用程式來說free的記憶體太少了,也是該考慮優化程式或加記憶體了。

例項2:以總和的形式顯示記憶體的使用資訊

命令:free -t 

輸出:[root@sf1150 service]#  free -t 

total       used       free     shared    buffers     cached

mem:      32940112   30845024    2095088          0    4545340   11364324

-/+ buffers/cache:   14935360   18004752swap:     32764556    1944984   30819572total:    65704668   32790008   32914660[root@sf1150 service]#

說明:例項3:週期性的查詢記憶體使用資訊

命令:free -s 10

輸出:[root@sf1150 service]#  free -s 10

total       used       free     shared    buffers     cached

mem:      32940112   30844528    2095584          0    4545340   11364380

-/+ buffers/cache:   14934808   18005304swap:     32764556    1944984   30819572

total       used       free     shared    buffers     cached

mem:      32940112   30843932    2096180          0    4545340   11364388

-/+ buffers/cache:   14934204   18005908swap:     32764556    1944984   30819572

說明:每10s 執行一次命令

linux重要命令

釋義 命令引數 示例 列目錄ls a 包括隱藏檔案 l 看詳細資訊 f 在檔案後面顯示表示檔案型別的符號 重定向 ls xx.txt管道 cmd1 cmd2 左面的輸出會作為右邊的輸入 許可權chmod chomd 777 file 切目錄cd 注意大小寫敏感 增 刪目錄 mkdir rmdir r...

linux 重要命令

檢視當前程序運 況 ps aux grep php very good ps aux grep nginx 刪除軟體命令 sudo apt get remove purge nginx 刪除nginx purge表示連配置檔案一起刪除 sudo apt get autoremove purge ng...

Linux 基礎重要命令

1.建立乙個目錄 data mkdir data 命令總結 1 mkdir 建立目錄的命令,mkdir directorys 2 ls ld directory 顯示目錄或者檔案 ls的全稱是list 3 cd 切換目錄層次 change directory 4 pwd 列印當前工作目錄 pwd的全...