侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux free命令教程:如何查看和优化系统内存使用情况(附实例及用法详解)

Linux free命令介绍

free命令是一个用来显示系统物理内存和交换空间的使用情况的命令。它可以提供关于总量、已用、空闲、共享、缓冲和缓存的内存的信息。它还可以显示可用的内存,这是一个估计值,表示可以用来满足应用程序内存请求的内存量。free命令的输出可以帮助你了解系统的内存管理机制,以及如何优化内存的使用。

Linux free命令适用的Linux版本

free命令是一个通用的Linux命令,它可以在大多数的Linux发行版中使用,包括Ubuntu, Debian, Fedora, CentOS, Red Hat, SUSE, Arch等。 如果你的系统没有安装free命令,你可以使用以下命令来安装它:

  • 对于基于Debian的系统,如Ubuntu,你可以使用apt命令:
[linux@bashcommandnotfound.cn ~]$ sudo apt update
[linux@bashcommandnotfound.cn ~]$ sudo apt install procps
  • 对于基于Red Hat的系统,如CentOS,你可以使用yum或dnf命令:
[linux@bashcommandnotfound.cn ~]$ sudo yum install procps-ng

或者

[linux@bashcommandnotfound.cn ~]$ sudo dnf install procps-ng

free命令是procps或procps-ng软件包的一部分,这些软件包提供了一些用于监控系统资源和进程的命令,如ps, top, vmstat等。

Linux free命令的基本语法

free命令的基本语法如下:

free [选项]

选项可以用来改变free命令的输出格式,比如显示单位、总计、循环等。free命令没有必须的参数,但是可以接受一些可选的参数,我们会在后面介绍。

Linux free命令的常用选项说明

free命令有以下一些常用的选项:

  • -b, --bytes: 以字节为单位显示内存。
  • -k, --kilo: 以千字节为单位显示内存(默认)。
  • -m, --mega: 以兆字节为单位显示内存。
  • -g, --giga: 以吉字节为单位显示内存。
  • --tera: 以太字节为单位显示内存。
  • -h, --human: 自动调整显示单位为最短的三位数,并显示单位。使用的单位有B(字节),K(千字节),M(兆字节),G(吉字节),T(太字节)。
  • -c, --count: 循环显示c次输出,与-s选项一起使用。
  • -l, --lohi: 显示详细的低内存和高内存统计信息。
  • -o, --old: 禁用显示缓冲调整后的行。
  • -s, --seconds: 每隔s秒连续显示输出,s可以是小数。
  • -t, --total: 在输出中添加一行显示列的总计。
  • --help: 显示帮助信息并退出。
  • -V, --version: 显示版本信息并退出。

Linux free命令的实例

下面是一些free命令的实例,你可以在你的系统上尝试运行它们,观察输出的变化。

  • 不带任何选项的free命令,以千字节为单位显示内存使用情况:
[linux@bashcommandnotfound.cn ~]$ free
              total        used        free      shared  buff/cache   available
Mem:        8048372     2593004     1366712      658380     4088656     4494976
Swap:             0           0           0
  • 使用-h选项的free命令,以人类可读的格式显示内存使用情况:
[linux@bashcommandnotfound.cn ~]$ free -h
              total        used        free      shared  buff/cache   available
Mem:          7.7Gi       2.5Gi       1.3Gi       643Mi       3.9Gi       4.3Gi
Swap:            0B          0B          0B
  • 使用-t选项的free命令,显示内存和交换空间的总计:
[linux@bashcommandnotfound.cn ~]$ free -t
              total        used        free      shared  buff/cache   available
Mem:        8048372     2593004     1366712      658380     4088656     4494976
Swap:             0           0           0
Total:      8048372     2593004     1366712
  • 使用-s选项的free命令,每隔2秒显示一次内存使用情况,直到按下Ctrl+C停止:
[linux@bashcommandnotfound.cn ~]$ free -s 2
              total        used        free      shared  buff/cache   available
Mem:        8048372     2593004     1366712      658380     4088656     4494976
Swap:             0           0           0
              total        used        free      shared  buff/cache   available
Mem:        8048372     2593004     1366712      658380     4088656     4494976
Swap:             0           0           0
              total        used        free      shared  buff/cache   available
Mem:        8048372     2593004     1366712      658380     4088656     4494976
Swap:             0           0           0
^C
  • 使用-l选项的free命令,显示低内存和高内存的统计信息:
[linux@bashcommandnotfound.cn ~]$ free -l
              total        used        free      shared  buff/cache   available
Mem:        8048372     2593004     1366712      658380     4088656     4494976
Low:        8048372     2593004     1366712
High:             0           0           0
Swap:             0           0           0

Linux free命令的注意事项

  • free命令的输出可能会随着系统的运行而变化,因为内核会根据需要动态地分配和回收内存。
  • free命令的输出中,空闲的内存(free)并不代表系统可以使用的内存,因为缓冲和缓存的内存也可以被回收。因此,可用的内存(available)是一个更准确的指标,它表示系统可以分配给应用程序的内存量,而不会导致交换。
  • free命令的输出中,共享的内存(shared)是指由tmpfs文件系统使用的内存,它是一种基于内存的文件系统,用于存储临时文件,如/run, /dev/shm等。
  • free命令的输出中,缓冲和缓存的内存(buff/cache)是指由内核用于提高系统性能的内存。缓冲(buffers)是指用于存储磁盘块的内存,缓存(cache)是指用于存储文件系统元数据和文件内容的内存。
  • 如果你想要释放缓冲和缓存的内存,你可以使用以下命令,但是这并不会提高系统的性能,反而可能会降低,因为内核会重新分配缓冲和缓存的内存:
[linux@bashcommandnotfound.cn ~]$ sudo sync
[linux@bashcommandnotfound.cn ~]$ sudo echo 3 > /proc/sys/vm/drop_caches
  • 如果你想要查看内存的详细信息,你可以使用以下命令,它们会显示更多的内存相关的参数和统计数据:
[linux@bashcommandnotfound.cn ~]$ cat /proc/meminfo
[linux@bashcommandnotfound.cn ~]$ vmstat -s
0

评论区