如何在Linux中检查内存使用情况

在对系统或应用程序的速度下降或行为异常进行故障排除时,要检查的第一件事是系统内存使用率。

本文介绍了如何使用几个不同的命令来检查Linux中的RAM使用情况。


free 命令

free是检查Linux系统内存使用情况的最常用命令。它显示有关总内存,已用内存和可用内存的信息。

通常,free使用-h选项进行调用,该选项意味着以人类可读的格式打印输出:

free -h

              total        used        free      shared  buff/cache   available
Mem:           3936        1087         252         130        2596        2427
Swap:             0           0           0

每列的含义如下:

  • 总计-应用程序可以使用的内存总量。
  • 已使用-已使用的内存。计算公式为:used = total - free - buffers - cache
  • 自由-自由/未使用的内存。
  • 共享-可以忽略此列;仅出于向后兼容的目的显示它。
  • buff / cache-内核缓冲区以及页面高速缓存和平板使用的组合内存。如果应用程序需要,可以随时回收此内存。
  • 可用-估计可用于启动新应用程序而无需交换的内存。

top 命令

top是一个命令行实用程序,用于显示有关正在运行的进程的实时信息。它还显示了系统摘要,包括内存使用情况。

要调用该命令,只需键入top

free -h

输出将如下所示:

输出的标头包含有关系统的总,可用和已用物理内存和交换内存的信息。

%MEM列提供有关每个正在运行的进程的可用物理内存已用份额的信息。

/proc/meminfo

检查RAM内存使用情况的最简单方法是显示/proc/meminfo虚拟文件的内容。该文件是由所使用的freetopps,和其它系统信息的命令。

使用lesscat查看/proc/meminfo文件的内容:

cat /proc/meminfo

该文件包含有关系统内存和交换使用情况的大量信息:

MemTotal:        4030592 kB
MemFree:          401804 kB
MemAvailable:    2507504 kB
...

来自/proc/meminfo文件的信息可以被解析并在shell脚本中使用。

ps_mem 脚本

ps_mem是一个Python脚本,用于报告每个程序的RAM内存使用情况。它可以与Python 2和3一起使用,并且可以安装pip

sudo pip3 install ps_mem

sudo ps_mem

输出将按升序包括每个正在运行的程序的内存使用情况:

 Private  +   Shared  =  RAM used   Program
...
 11.9 MiB +  20.2 MiB =  32.1 MiB   nginx (4)
  8.2 MiB +  42.4 MiB =  50.6 MiB   systemd-journald
 55.8 MiB + 307.2 MiB = 363.0 MiB   php-fpm7.4 (6)
233.9 MiB + 234.0 MiB = 467.9 MiB   redis-server
578.2 MiB + 578.6 MiB =   1.1 GiB   mysqld
---------------------------------
                          2.2 GiB
=================================

当您想找出哪个正在运行的程序占用了系统大部分内存时,此脚本很有用。

docker妙用技巧
如何每5分钟、10分钟或15分钟运行一次Cronjob
Tags:,