10 个用于检查 Linux 内存使用情况的"free"命令
如果您是 Linux 用户,您可能听说过"内存使用情况"这个术语。内存使用情况是指计算机在任何给定时间使用的内存量。它是一个需要跟踪的重要指标,因为过多的内存使用量会导致系统运行缓慢甚至崩溃。幸运的是,Linux 提供了一个名为"free"的内置工具,允许您检查系统的内存使用情况。在本文中,我们将介绍如何使用"free"命令检查 Linux 中的内存使用情况。
什么是"free"命令?
"free"命令是 Linux 中的一个内置工具,用于显示有关系统内存使用情况的信息。它提供有关正在使用的内存量、可用空闲内存量以及系统内核正在使用的内存量的详细信息。
如何使用"free"命令?
使用"free"命令很简单。只需打开终端,输入"free"并加上任意可选参数即可。以下是示例 -
$ free
这将显示系统的内存使用情况统计信息。
理解"free"命令的输出
"free"命令的输出可能有点让人眼花缭乱,尤其是对于 Linux 新手来说。但是,一旦您理解了各个字段的含义,阅读和解释起来就会变得更容易。以下是示例输出 -
total used free shared buff/cache available
Mem: 8093816 1439556 5458576 195084 1194684 6159384
Swap: 2097148 0 2097148
以下是每个字段的含义 -
total - 系统可用的物理内存总量。
used - 系统当前正在使用的内存量。
free - 当前可用的内存量。
shared - 不同进程之间共享的内存量。
buff/cache - 用于磁盘缓存的内存量。
available - 可供新进程使用的内存量。
需要注意的是,"used"字段中显示的值不包括用于磁盘缓存的内存。相反,它显示在"buff/cache"字段中。"available"字段显示新进程实际可用的内存量,其中已计入磁盘缓存的内存。
使用"-h"标志
默认情况下,"free"命令以字节为单位显示内存使用情况统计信息。这可能难以阅读,尤其是在处理大量内存时。幸运的是,您可以使用"-h"标志以更易于阅读的格式显示输出。以下是示例 -
$ free -h
这将以更易于阅读的格式显示输出,使用"MB"和"GB"等单位而不是字节。
使用"-s"标志
如果您想持续监控系统的内存使用情况,可以使用"-s"标志指定每次更新之间的延迟。例如,以下命令将每 5 秒显示一次内存使用情况统计信息 -
$ free -s 5
使用"-t"标志
默认情况下,"free"命令会显示物理内存和交换空间的内存使用情况统计信息。如果您只想查看物理内存的统计信息,可以使用"-t"标志排除交换空间的统计信息。例如 -
$ free -t
这将仅显示物理内存的内存使用情况统计信息。
以下是一些如何使用"free"命令并结合不同标志的示例 -
以兆字节为单位显示内存使用情况
$ free -m
这将以兆字节为单位显示内存使用情况统计信息,这比默认的字节格式更易于阅读。
以千兆字节为单位显示内存使用情况
$ free -g
这将以千兆字节为单位显示内存使用情况统计信息,这对于拥有大量内存的系统非常有用。
以 2 秒的延迟连续循环显示内存使用情况
$ free -s 2 -c
这将以连续循环的方式显示内存使用情况统计信息,每次更新之间延迟 2 秒。"-c"标志指定在每次更新之前清除输出。
显示特定进程的内存使用情况统计信息
$ ps aux | grep firefox $ pmap <PID>
这将显示特定进程(例如 Firefox Web 浏览器)的内存使用情况统计信息。首先,使用"ps"命令查找要检查的进程的进程 ID (PID)。然后,使用带有 PID 的"pmap"命令显示该进程的详细内存使用情况信息。
显示特定用户的内存使用情况统计信息
$ sudo su <USERNAME> $ free -u <USERNAME>
这将显示特定用户(例如 root 用户或系统上的其他用户)的内存使用情况统计信息。首先,使用"sudo su"命令切换到用户帐户。然后,使用带有"-u"标志的"free"命令显示该用户的内存使用情况统计信息。
以特定格式显示内存使用情况统计信息
$ free -o
这将以特定格式显示内存使用情况统计信息,这对于脚本编写或解析输出非常有用。 "-o" 标志指定输出应为"long"格式。
以特定单位显示内存使用情况统计信息
$ free -k
这将以千字节为单位显示内存使用情况统计信息,这对于内存资源有限的系统非常有用。
显示特定时间间隔的内存使用情况统计信息
$ free -t 10
这将每 10 秒显示一次内存使用情况统计信息,这对于监控系统的内存使用情况非常有用。 "-t" 标志指定间隔(以秒为单位)。
显示特定进程组的内存使用情况统计信息
$ free -g 1
这将显示特定进程组的内存使用情况统计信息,例如在容器或虚拟机中运行的一组进程。"-g"标志指定进程组 ID。
显示特定内存类型的内存使用情况统计信息
$ free -b -t | grep "^Swap"
这将显示特定内存类型(例如交换空间)的内存使用情况统计信息。"-b"标志指定输出以字节为单位,"grep"命令会过滤输出以仅显示交换空间统计信息。
按特定字段排序显示内存使用情况统计信息
$ free -m | sort -nk 2
这将显示按"used"列升序排序的内存使用情况统计信息,这有助于识别消耗最多内存的进程或服务。"sort"命令用于根据特定列对输出进行排序,"-n"选项指定按数字排序,"-k"选项指定按列排序。
显示带有时间戳的内存使用情况统计信息
$ while true; do date +"%F %T"; free -h; sleep 5; done
这将显示带有时间戳的内存使用情况统计信息,这对于跟踪内存使用情况随时间的变化非常有用。"while"循环用于连续运行"date"和"free"命令,每次更新之间延迟 5 秒。
显示特定虚拟内存区域的内存使用情况统计信息
$ free -t | grep "VmallocUsed"
这将显示特定虚拟内存区域的内存使用情况统计信息,例如内核使用的"vmalloc"区域。"grep"命令会过滤输出,仅显示"VmallocUsed"行,该行显示虚拟内存区域使用的内存量。
显示特定进程 ID 的内存使用情况统计信息
$ ps aux | grep firefox $ cat /proc/<PID>/status | grep VmRSS
这将显示特定进程 ID(例如 Firefox Web 浏览器)的内存使用情况统计信息。首先,使用"ps"命令查找要检查的进程的进程 ID (PID)。然后,使用"cat"命令和"/proc/PID/status"文件显示该进程的详细内存使用情况信息,例如驻留集大小 (RSS) 或其代码段的大小。
结论
"free"命令是一个强大的工具,可让您在 Linux 中检查系统的内存使用情况。通过理解输出中的不同字段并使用各种标志,您可以详细了解系统如何使用其内存资源。监控内存使用情况对于任何 Linux 用户来说都是一项重要任务,尤其是在运行内存密集型应用程序或服务器时。使用"free"命令,您可以快速轻松地检查系统内存使用情况,并在必要时采取措施。
除了"free"命令之外,Linux 中还有其他可用于监控内存使用情况的工具。例如,"top"命令可以实时显示系统内存使用情况、CPU 使用情况以及其他系统统计信息。此外,还有一些第三方工具可用,例如"htop",它提供了更高级的系统资源监控界面。
相关文章
有用资源
linux 参考教程 - 该教程包含有关 linux 的更多信息:https://www.cainiaomax.com/linux/

