在对系统,应用程序速度减慢或行为异常进行故障排除时,首先要检查的问题之一是系统内存使用率。

本教程介绍如何使用free,top,ps_mem命令来检查Linux中的RAM使用情况。

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

free命令最经常使用的选项-h选项,free命令将以友好的阅读格式打印输出。

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

total 内存总量。used 已使用的内存。,计算公式是used = total - free - buffers - cache

free可用/未使用的内存。shared 可以忽略此列,buff/cache 内核缓冲区以及页面缓存和slab使用的组合内存。 如果应用程序需要,可以随时回收此内存。

available   在不使用交换空间的情况启动应用程序可用内存的估计数。free命令显示物理内存和交换空间的信息。

top命令

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

要查看内存的使用率,只需要在终端运行top命令。输出包含系统的总内存,可用和已用物理内存和交换空间的信息。

%MEM列提供每个进程的使用物理内存使用率的信息。

top

/proc/meminfo

检查内存使用率的最简单方法是查看虚拟文件/proc/meminfo的内容。 freetopps和其他系统信息命令都读取此文件。

你也可以通过运行lesscat命令查看/proc/meminfo文件的内容。该文件包含系统内存和交换空间使用量信息。

直接查看此文件可能对阅读不太友好,但你运行ps_mem命令可以解析/proc/meminfo文件中的信息。

cat /proc/meminfo
MemTotal:        4030592 kB
MemFree:          401804 kB
MemAvailable:    2507504 kB
...

ps_mem 脚本

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

运行ps_mem命令需要sudo权限,输出将按升序包括每个正在运行的程序的内存使用率。当您想找出哪个正在运行的程序占用了系统大部分内存时,此脚本很有用。

除了打印全部进程内存使用率之外,你还可以使用ps_mem的-p选项,后跟进程PID,查看指定进程内存使用率。

sudo pip3 install ps_mem
sudo ps_mem
sudo ps_mem -p pid_number
 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
=================================

结论

我们向您展示了一些可用于查看内存使用量的命令。如果您有任何疑问或意见,请在下面发表评论。