Linux free 命令

2021-02-13 Linux開發那些事兒


在Linux/Unix 系統上,free是一個很受系統管理員歡迎的命令,它是一個功能強大的工具,他能以一種易讀的方式把內存使用情況展示出來

free 展示了系統中空閒和已經使用了的物理內存、交換內存以及內核的緩衝區和頁面緩存,所有展示的信息都是從 /proc/meminfo 文件解析出來的

語法

free命令的語法如下

free [options]


輸出列說明

當只輸入free 命令不帶任何選項時,輸出的內存和交換內存大小是以 KB(kbytes)為單位的,具體的輸出如下所示(在舊版的Linux系統中,顯示可能略有不同):

[root@ecs-centos-7 ~]# free
total used free shared buff/cache available
Mem: 1881544 325980 1307868 8712 247696 1406892
Swap: 0 0 0

總內存的大小,可以用於應用程式的內存

已經使用內存,計算方式是:used = total - free - buff/cache

還沒有使用的內存

進程之間的共享內存

內核緩衝區和頁面緩存,如果應用程式需要的話,可以隨時回收這部分緩存,通過 free -w 命令可以分別顯示 buff 和 cache 佔用的內存

可用內存的預估大小,可以用於啟動新的應用程式,實際應用中,可以把 free 和 buff/cache 加起來看做 available 的近似值,即 free + buff/cache ≈ available


常用的選項

以下是一些常用的選項

[root@ecs-centos-7 ~]# free -h
total used free shared buffers cache available
Mem: 1881544 353752 881684 8712 147960 498148 1370492
Swap: 0 0 0

[root@ecs-centos-7 ~]# free -t
total used free shared buff/cache available
Mem: 1881544 354108 881328 8712 646108 1370136
Swap: 0 0 0
Total: 1881544 354108 881328

[root@ecs-centos-7 ~]# free -s 2
total used free shared buff/cache available
Mem: 1881544 353960 881476 8712 646108 1370284
Swap: 0 0 0

total used free shared buff/cache available
Mem: 1881544 353984 881452 8712 646108 1370260
Swap: 0 0 0

total used free shared buff/cache available
Mem: 1881544 353984 881452 8712 646108 1370260
Swap: 0 0 0

例子中的命令是每隔2秒輸出一次內存信息,直到按 Ctrl + Z 停止

[root@ecs-centos-7 ~]# free -c 3
total used free shared buff/cache available
Mem: 1881544 353960 881476 8712 646108 1370284
Swap: 0 0 0

total used free shared buff/cache available
Mem: 1881544 353984 881452 8712 646108 1370260
Swap: 0 0 0

total used free shared buff/cache available
Mem: 1881544 353984 881452 8712 646108 1370260
Swap: 0 0 0

上面的例子是重複輸出內存信息3次,每次間隔默認是1秒,如果要修改默認輸出間隔可以加上 -s 秒數,下面的命令是:重複輸出3次,每次輸出間隔2秒

free -c 3 -s 2

[root@ecs-centos-7 ~]# free -w
total used free shared buffers cache available
Mem: 1881544 354100 881328 8712 147968 498148 1370144
Swap: 0 0 0

[root@ecs-centos-7 ~]# free -b
total used free shared buff/cache available
Mem: 1926701056 362446848 902631424 8921088 661622784 1403179008
Swap: 0 0 0
[root@ecs-centos-7 ~]# free -k
total used free shared buff/cache available
Mem: 1881544 354100 881328 8712 646116 1370144
Swap: 0 0 0
[root@ecs-centos-7 ~]# free -m
total used free shared buff/cache available
Mem: 1837 345 860 8 630 1338
Swap: 0 0 0
[root@ecs-centos-7 ~]# free -g
total used free shared buff/cache available
Mem: 1 0 0 0 0 1
Swap: 0 0 0

上面的例子中,分別以 Bytes、KB、MB、GB 為單位輸出內存信息,會自動忽略小於對應單位的數值,比如 free -g命令,只有 total 和 available 列的值大於 1GB ( 1024 * 1024 * 1024 Bytes ), 其他列的值都是小於 1GB,所以 total 和 available 列顯示 1,其他列都顯示 0


實際還有多少可用內存
[root@ecs-centos-7 ~]# free -h
total used free shared buff/cache available
Mem: 1.8G 534M 100M 8.5M 1.3G 1.5G
Swap: 0B 0B 0B

在上面的示例中,如果只是看 used 以及 free 的話,會以為系統可用內存已經不足100M,也即可使用內存不足 1%了

實際上,已經被應用程式使用的只有 27%左右(534M / 1.8G), 應用程式可用內存是 availabe 或者 free + buff/cache ,也就是說例子中實際可用於應用程式的內存有 1.5G 之多

內存什麼時候告急

在平常的伺服器監控內存的過程中,有以下幾個信號是需要引起注意的

availabe 或者 free + buff/cache 表示實際應用程式的可用內存,如果它接近於0的話,表示應用程式可用內存不足,需要儘快處理

已使用交換內存一直增長的話,有可能是物理內存不足的先兆,當物理內存長時間不足的時候,才會頻繁的使用交換內存,導致已使用交換內存一直增長

為了防止系統物理內存不夠用的時候系統崩潰,當檢測到內存不足時,系統會 kill 掉最佔用內存的進程,/var/log/message 中會記錄 Out of memory的日誌

推薦閱讀

相關焦點

  • linux命令free詳解
    total= used + free 第2行 -/+ buffers/cached: used:也就是第一行中的used - buffers-cached 也是實際使用的內存總量。free:未被使用的buffers 與cache 和未被分配的內存之和,這就是系統當前實際可用內存。
  • 每天一個 Linux 命令(45):free 命令
    在Linux系統監控的工具中,free命令是最經常使用的命令之一。1.命令格式:free [參數]2.命令功能:free 命令顯示系統使用和空閒的內存情況,包括物理內存、交互區內存(swap)和內核緩衝區內存。
  • linux系統下free命令內存計算邏輯
    本篇文章介紹下linux下free命令展示的內存相關計算邏輯。
  • 檢測Linux內存使用情況的free命令的10個
    確定物理內存和交換內存所有可用空間的最重要、也是唯一的方法是使用「free」命令。Linux 「free」命令可以給出類Linux/Unix作業系統中物理內存和交換內存的總使用量、可用量及內核使用的緩衝區情況。這篇文章提供一些各種參數選項的「free」命令,這些命令對於你更好地利用你的內存會有幫助。
  • free:一個在 Linux 中檢查內存使用情況的標準命令
    free 是 Linux 中一個標準的並且被廣泛使用的命令,它被用來分析內存統計(空閒和已用)。今天,我們將要討論 free 命令以及它的一些有用選項。推薦文章:Free 命令是什麼free 命令能夠顯示系統中物理上的空閒free和已用used內存,還有交換swap內存,同時,也能顯示被內核使用的緩衝buffers和緩存caches。
  • Linux free 命令 - 顯示系統中空閒和已使用的內存
    Linux有一個稱為 free 的工具,來監控內存使用率。free 命令是什麼free 命令是一個顯示系統中空閒和已用內存大小的工具。free 命令的輸出和 top 命令相似。大多數Linux發行版已經含有 free 命令。
  • 【Linux】命令每日一個:free
    當可用內存少於額定值的時候,就會開會進行交換.如何看額定值: 命令:cat /proc/meminfo 輸出:[root@SF1150 service]# cat /proc/meminfoMemTotal: 32940112 kBMemFree: 2096700 kB
  • 6 個例子讓初學者掌握 free 命令 | Linux 中國
    在 Linux 系統上,有時你可能想從命令行快速地了解系統的已使用和未使用的內存空間。如果你是一個 Linux 新手,有個好消息:有一條系統內置的命令可以顯示這些信息:free。在本文中,我們會講到 free 命令的基本用法以及它所提供的一些重要的功能。文中提到的所有命令和用法都是在 Ubuntu 16.04LTS 上測試過的。
  • 【玩轉Linux命令】free來了
    這一期的玩轉Linux命令,小編給大家帶來的是 free 命令。
  • linux性能監控:內存監控命令之free命令
    free命令可以顯示當前系統未使用的和已使用的內存數目,還可以顯示被內核使用的內存緩衝區。顯示內存使用信息:命令:    free 輸出:以總和的形式查詢內存使用情況:命令:    free -t輸出:
  • Linux中Tee命令使用實例
    下面例子使用free命令顯示系統內存使用信息,並使用tee命令將信息輸出到屏幕,並保存到文件mem.txt中。[root@localhost ~]# free -h | tee mem.txt              total        used        free      shared  buff/cache   availableMem:           1.8G        164M        1.2G        9.6M        387M
  • FreeSurfer 6 Linux 安裝教程
    安裝包到/usr/local中:2.安裝freesurfer安裝包到目錄/usr/local下:tar -C /usr/local -xzvf freesurfer-Linux-centos6_x86_64-stable-pub-v6.0.0.tar.gzapt-get -y install bc binutils libgomp1 perl
  • 【玩轉linux命令】YUM
    簡介yum命令是在Fedora和RedHat以及SUSE中基於rpm的軟體包管理器,它可以使系統管理人員交互和自動化更新與管理RPM軟體包,能夠從指定的伺服器自動下載
  • 用以檢查 Linux 內存使用的 5 個命令 | Linux 中國
    對此,Linux 還有 free 命令。free 命令顯示:在終端窗口中,輸入 free 命令。它的輸出不是實時的,相反,你將獲得的是當前空閒和已用內存的即時快照(圖 3)。圖 3 :free 命令的輸出簡單明了。當然,你可以通過添加 -m 選項來讓 free 顯示得更友好一點,就像這樣:free -m。這將顯示內存的使用情況,以 MB 為單位(圖 4)。
  • Linux vmstat命令詳解
    Linux命令千千萬,而我們在日常工作中真真切切用到的命令應該不超過50個,在接下來的日子裡,我會對我經常使用的命令,以及使用過程中不熟悉的命令進行一個總結
  • Linux常用命令大全
    --help參數:所有linux上的命令都有,但寫法上有如下幾種: (1)--help (2)--h (3)-help (4)-hll命令:它和ls -l命令功能相同,但是不是所有的linux上都默認安裝cd命令cd 目錄路徑 #進入一個目錄,目錄路徑可以是絕對路徑(以/開始的路徑都是絕對路徑),也可以是相對路徑相對路徑
  • 150個常用的Linux命令一網打盡
    隨著Linux越來越普及、應用越來越成熟,基本上服務都部署在linux伺服器,那麼作為Tester,Linux基本的操作命令必須得會,沒有任何理由
  • Linux常用操作命令
    linux是一款不同於windows的作業系統,而且它是黑客、滲透人員、運維人員等必會的。整理的Linux常用操作命令將會能夠讓你基礎操作它。快捷鍵1、打開終端 ctrl+alt+t2、推出滑鼠ctrl+command3、tar -zxvf filename  解壓縮4、cd 進入指定的目錄  cd ..
  • Linux sed命令
    實例在testfile文件的第四行後添加一行,並將結果輸出到標準輸出,在命令行提示符下輸入如下命令:sed -e 4a\newLine testfile 首先查看testfile中的內容如下:$ cat testfile #查看testfile 中的內容  HELLO LINUX!
  • linux常用命令學習總結(超詳細)
    全文命令分為以下6個模塊:1、常用系統工作命令2、系統狀態檢測命令3、工作目錄切換命令4、文本文件編輯命令5、文件目錄管理命令6、打包壓縮與搜索命令在說具體命令之前,讀者應該清楚linux命令的基本格式,如下:linux命令的格式