Contents

Linux中的Free命令

1. 概述

有时我们想**知道我们的 Linux 系统的内存使用情况。**在本教程中,我们将看到如何使用free 的命令行实用程序来做到这一点。

2. free命令示例

free命令是一个 Linux 工具,可以显示当前 RAM 和交换空间的使用情况

$ free
              total        used        free      shared  buff/cache   available
Mem:       32882588     4418516    26725724      437164     1738348    27589116
Swap:       2097148           0     2097148

让我们看看输出中每一列的含义:

  • total:系统中可用的总内存
  • used:系统当前使用的内存
  • free:未使用的内存
  • shared:tmpfs使用的内存
  • buff/cache:由内核缓冲区、页面缓存和slab填充的组合内存
  • 可用:估计可以在不开始交换的情况下使用的空闲内存

2.1. 人类可读选项

默认情况下, free命令以 KB 为单位显示所有值,阅读起来可能有点不舒服,但我们可以使用*-h*选项以更易读的格式显示数字:

$ free -h
              total        used        free      shared  buff/cache   available
Mem:            31G        6.2G         23G        541M        1.9G         24G
Swap:          1.5G          0B        1.5G

2.2. 以兆字节表示的内存:

要显示以兆字节表示的值,我们可以使用*-m*选项:

$ free -m
              total        used        free      shared  buff/cache   available
Mem:          32111        6200       23000         541        1900       24000
Swap:          1500           0        1500

2.3. 以千兆字节表示的内存:

同样,我们也可以使用*-g*选项显示以千兆字节表示的值 :

$ free -g
              total        used        free      shared  buff/cache   available
Mem:             31           6          23           0           1          24
Swap:             1           0           1

2.4. 1000 格式的力量

默认情况下,值以 1024 的幂表示,但如果我们想显示以1000 的幂表示的值,我们可以使用*–si*选项:

$ free -h --si
              total        used        free      shared  buff/cache   available
Mem:            32G         6.3G         22G        553M        1.8G         25G
Swap:          1.5G           0B        1.5G

2.5. 内存总量

如果我们想知道RAM 和交换已用/空闲内存的总量, 我们可以使用*-t* 选项:

$ free -h -t 
              total        used        free      shared  buff/cache   available
Mem:            31G         13G        9.8G        1.1G        8.3G         16G
Swap:          1.5G          0B          0B
Total:        32.5G         13G       11.3G

3. 实时显示

我们还可以*使用*free 实时显示内存使用情况。

让我们使用*-s*选项,后跟我们想要的每次显示之间的秒数:

$ free -h -s 2
              total        used        free      shared  buff/cache   available
Mem:            31G        6.2G         23G        541M        1.9G         24G
Swap:          1.5G          0B        1.5G
              total        used        free      shared  buff/cache   available
Mem:            31G        6.2G         23G        541M        1.9G         24G
Swap:          1.5G          0B        1.5G
              total        used        free      shared  buff/cache   available
Mem:            31G        6.2G         23G        541M        1.9G         24G
Swap:          1.5G          0B        1.5G

在此示例中,我们将每 2 秒获取一次统计信息。

4. 内存使用记录

有时我们需要长时间记录内存使用情况。在这种情况下,一个小的 Bash 脚本会很有用。

我们可以同时执行free命令和date命令,并将结果重定向到日志文件:

while true; do date >> memory.log; free >> memory.log; sleep 1; done

这个单行脚本将每秒将日期和内存使用情况写入日志文件。当然,我们可以调整sleep后的数字来改变日志频率。