Linux-free命令学习

一、前言

  Linux中free命令用于分析和统计内存信息(空闲,已用,交换),也就是显示系统中可用的和已用的物理内存及交换内存的总量,以及内核用到的缓存空间,而这些信息是从 /proc/meminfo 中得到的,不过free命令和top命令有些地方很像。

二、free命令使用

接下来,我们直接通过例子来学习该命令的使用。

1. 默认情况下,直接运行free命令:
[mrzhang@192 ~]$ free
              total        used        free      shared  buff/cache   available
Mem:        3823720      891824     2255436      137028      676460     2527420
Swap:       4063228           0     4063228
[mrzhang@192 ~]$ 

由于我们以及学习过top命令,对这些内存项应该比较了解了,这里直接复制网上的一段内容,来源 https://linux.cn/article-9232-1.html

  1. total - 安装的内存的总量(等同于 /proc/meminfo 中的 MemTotal 和 SwapTotal)
  2. used - 已使用的内存(计算公式为:used = total - free - buffers - cache)
  3. free - 未被使用的内存(等同于 /proc/meminfo 中的 MemFree 和 SwapFree)
  4. shared - 通常是临时文件系统使用的内存(等同于 /proc/meminfo 中的 Shmem;自内核 2.6.32 版本可用,不可用则显示为 0)
  5. buffers - 内核缓冲区使用的内存(等同于 /proc/meminfo 中的 Buffers)
  6. cache - 页面缓存和 Slab 分配机制使用的内存(等同于 /proc/meminfo 中的 Cached 和 Slab)
  7. buff/cache - buffers 与 cache 之和
  8. available - 在不计算交换空间的情况下,预计可以被新启动的应用程序所使用的内存空间。与 cache 或者 free 部分不同,这一列把页面缓存计算在内,并且不是所有的可回收的 slab 内存都可以真正被回收,因为可能有被占用的部分。(等同于 /proc/meminfo 中的 MemAvailable;自内核 3.14 版本可用,自内核 2.6.27 版本开始模拟;在其他版本上这个值与 free 这一列相同)
2. 更改显示的内存单位

默认情况下,显示的内存的单位是kb单位,如果有需要,我们可以选择更改内存的显示单位:

-b 以字节为单位显示
-k 以KB为单位显示
-m 以MB为单位显示
-g 以GB为单位显示
--tera 以TB为单位显示
[mrzhang@192 ~]$ free -k
              total        used        free      shared  buff/cache   available
Mem:        3823720      872568     2268432      138624      682720     2544528
Swap:       4063228           0     4063228
[mrzhang@192 ~]$ free -b
              total        used        free      shared  buff/cache   available
Mem:     3915489280   896196608  2320519168   141623296   698773504  2603241472
Swap:    4160745472           0  4160745472
[mrzhang@192 ~]$ free -g
              total        used        free      shared  buff/cache   available
Mem:              3           0           2           0           0           2
Swap:             3           0           3
[mrzhang@192 ~]$ 

并且,我们可以通过-h 来提高格式的可读性:

[mrzhang@192 ~]$ free -gh
              total        used        free      shared  buff/cache   available
Mem:           3.6G        887M        2.1G        135M        666M        2.4G
Swap:          3.9G          0B        3.9G
[mrzhang@192 ~]$ 

使用该参数,free会自动决定使用什么单位来显示内存的各项数据。

3. free命令持续运行

默认情况下,free命令输出的结果只有一次数据就结束了,如果我们想让内存信息持续展示,可以通过-s 参数设置间隔时间,比如每隔3秒运行一次:

[mrzhang@192 ~]$ free -s 3
              total        used        free      shared  buff/cache   available
Mem:        3823720      928332     2212868      138384      682520     2488980
Swap:       4063228           0     4063228

              total        used        free      shared  buff/cache   available
Mem:        3823720      928400     2212800      138384      682520     2488912
Swap:       4063228           0     4063228

并且如果我们想让free命令只执行固定的次数,那么可以通过-c 参数指定指定的次数:

[mrzhang@192 ~]$ free -s 3 -c 2
              total        used        free      shared  buff/cache   available
Mem:        3823720      938632     2202504      138432      682584     2478616
Swap:       4063228           0     4063228

              total        used        free      shared  buff/cache   available
Mem:        3823720      939192     2202020      138356      682508     2478132
Swap:       4063228           0     4063228
[mrzhang@192 ~]$ 

free命令会在执行完相应的次数之后自动终止。

4. free内存的计算基于1000,而不是1024

如果我们指定 free 用 MB 来显示内存(用 -m 参数),但又想基于 1000 来计算结果,可以用 --si 这个参数来实现:

[mrzhang@192 ~]$ free -mh
              total        used        free      shared  buff/cache   available
Mem:           3.6G        919M        2.1G        135M        666M        2.4G
Swap:          3.9G          0B        3.9G
[mrzhang@192 ~]$ free -mh --si
              total        used        free      shared  buff/cache   available
Mem:           3.8G        940M        2.2G        139M        684M        2.5G
Swap:          4.1G          0B        4.1G
[mrzhang@192 ~]$ 
5. 使用free命令显示每一列的总和

我们可以使用 -t 参数来显示每一列的总和:

[mrzhang@192 ~]$ free -t
              total        used        free      shared  buff/cache   available
Mem:        3823720      941916     2198804      138840      683000     2474928
Swap:       4063228           0     4063228
Total:      7886948      941916     6262032
[mrzhang@192 ~]$ 

另外,free的另一个参数 -l 会显示最低和最高的内存统计,并且默认情况下,缓冲/缓存内存是同时输出的,为了取消缓冲和缓存内存的输出,可以使用-w 命令。

[mrzhang@192 ~]$ free -l
              total        used        free      shared  buff/cache   available
Mem:        3823720      938672     2197000      141020      688048     2475612
Low:        3823720     1626720     2197000
High:             0           0           0
Swap:       4063228           0     4063228
[mrzhang@192 ~]$ free -h
              total        used        free      shared  buff/cache   available
Mem:           3.6G        913M        2.1G        135M        669M        2.4G
Swap:          3.9G          0B        3.9G
[mrzhang@192 ~]$ free -wh
              total        used        free      shared     buffers       cache   available
Mem:           3.6G        914M        2.1G        135M        2.1M        667M        2.4G
Swap:          3.9G          0B        3.9G
[mrzhang@192 ~]$ 

最后,我们大致看下free命令的帮助文档,free --help

Usage:
 free [options] 

Options:
 -b, --bytes         show output in bytes
 -k, --kilo          show output in kilobytes
 -m, --mega          show output in megabytes
 -g, --giga          show output in gigabytes
     --tera          show output in terabytes
 -h, --human         show human-readable output
     --si            use powers of 1000 not 1024
 -l, --lohi          show detailed low and high memory statistics
 -t, --total         show total for RAM + swap
 -s N, --seconds N   repeat printing every N seconds
 -c N, --count N     repeat printing N times, then exit
 -w, --wide          wide output

     --help     display this help and exit
 -V, --version  output version information and exit

可以看到,我们上文所说的所有参数,在帮助文档中都有对应的简单释义,如果想了解更多,可以自行 man free

本文参考自:https://linux.cn/article-9232-1.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容