Linux shell编程学习笔记63:free命令 获取内存使用信息

0 前言

在系统安全检查中,内存使用情况也是一块可以关注的内容。Linux提供了多个获取内存信息的命令很多。今天我们先研究free命令。

1 free命令的功能、用法和选项说明

1.1 free命令的功能

free 命令可以显示系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存。

[purpleendurer @ bash ~] 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
     --peta          show output in petabytes
 -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

For more details see free(1).
[purpleendurer @ bash ~] 

1.2 free命令的用法

free [选项]

1.3 选项说明

 

选项 说明

-b

--bytes

以字节为单位显示输出

-k

--kilo

以千字节为单位显示输出

-m

--mega

以兆字节为单位输出

-g

--giga

以 GB 为单位输出
--tera 以 TB 为单位输出
--peta 以 PB 为单位输出

-h

--human

显示人类可读的输出
--si 使用 1000 的幂而不是 1024

-l

--lohi

显示详细的低内存和高内存统计信息

-t

--total

显示 RAM + 交换的总计

-s N

--seconds N

每 N 秒重复打印一次

-c N

--count N

重复打印 N 次,然后退出

-w

--wide

宽宽输出
--help 显示此助信息并退出

-V

--version

输出版本信息并退出

 2 free命令应用实例

2.1 free

[purpleendurer @ bash ~]free
              total        used        free      shared  buff/cache   available
Mem:        3855940      236804     2051384         360     1567752     3371200
Swap:             0           0           0
[purpleendurer @ bash ~]

 

 

命令返回的信息针对 Mem(内存)和Swap(交换空间)分别显示了6列信息。

Mem(内存)比交内容理解。

swap space (交换空间)是磁盘上的一块区域,当系统物理内存吃紧时,Linux 会将内存中不常访问的数据保存到 swap 上,这样系统就有更多的物理内存来使用,而当系统需要访问 swap 上存储的内容时,再将 swap 上的数据加载到内存中,这就是常说的换出和换入。

再来看6列信息的含义。

第1列 total            :系统总的可用物理内存和交换空间大小。
第2列 used           :已经被系统使用的物理内存和交换空间。
第3列 free             :还有多少物理内存和交换空间可用使用。
第4列 shared        : 显示被共享使用的物理内存大小。
第5列 buff/cache  :被 buffer 和 cache 使用的物理内存大小。
第6列  available   : 可以被应用程序使用的物理内存大小。

buff ( buffer cache),即 "缓冲区"。操作系统中文件系统的最小寻址单元是块,每个块包含一个或多个扇区。当一个块被调入内存时,它要存储在一个缓冲区中。每个缓冲区与一个块对应。缓冲区只是把磁盘上的块直接搬到内存中而不关心块中究竟存放的是什么格式的文件。

cache (page cache),即 "页高速缓存"。页高速缓存是内核实现的磁盘缓存。它通过把磁盘中的数据缓存到物理内存中,把对磁盘的访问变为对物理内存的访问,来减少对磁盘的 I/O 操作。页高速缓存缓存的是内存页面。缓存中的页来自对普通文件、块设备文件(即 buffer cache 呀)和内存映射文件的读写。

对于系统来说,buffer 和 cache 都属于已经被使用的内存。当应用程序需要内存时,如果没有足够的 free 内存可以用,内核就会从 buffer 和 cache 中回收内存来满足应用程序的请求。所以从应用程序的角度来说,available  = free + buffer + cache

2.2 free -h :显示人类可读的输出

 

[purpleendurer @ bash ~]free -h
              total        used        free      shared  buff/cache   available
Mem:           3.7G        259M        1.9G        360K        1.5G        3.2G
Swap:            0B          0B          0B
[purpleendurer @ bash ~]

 

 2.3 free -h -s 5:每隔5秒显示一次信息

[purpleendurer @ bash ~]free -h -s 5
              total        used        free      shared  buff/cache   available
Mem:           3.7G        259M        1.9G        360K        1.5G        3.2G
Swap:            0B          0B          0B

              total        used        free      shared  buff/cache   available
Mem:           3.7G        258M        1.9G        360K        1.5G        3.2G
Swap:            0B          0B          0B

              total        used        free      shared  buff/cache   available
Mem:           3.7G        259M        1.9G        360K        1.5G        3.2G
Swap:            0B          0B          0B

              total        used        free      shared  buff/cache   available
Mem:           3.7G        259M        1.9G        360K        1.5G        3.2G
Swap:            0B          0B          0B

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 18:02:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 18:02:03       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 18:02:03       58 阅读
  4. Python语言-面向对象

    2024-07-11 18:02:03       69 阅读

热门阅读

  1. mysql bit 对gorm使用何种类型?

    2024-07-11 18:02:03       26 阅读
  2. python爬虫学习(三十三天)---多线程上篇

    2024-07-11 18:02:03       23 阅读
  3. 一、Python 日志系统设计之不同级别的系统日志

    2024-07-11 18:02:03       20 阅读
  4. SpringAMQP收发消息demo

    2024-07-11 18:02:03       20 阅读
  5. SpringSecurity中文文档(Servlet OAuth 2.0 Login)

    2024-07-11 18:02:03       19 阅读
  6. ant-design-vue表格设置某列标题部分文字颜色

    2024-07-11 18:02:03       24 阅读
  7. python-redis-lock是如何实现锁自动续期的

    2024-07-11 18:02:03       22 阅读
  8. APK反编译

    2024-07-11 18:02:03       25 阅读