Linux中检查内存使用情况的命令

Posted bjzb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux中检查内存使用情况的命令相关的知识,希望对你有一定的参考价值。

  Linux操作系统包含大量工具,所有这些工具都可以帮助您管理系统。从简单的文件和目录工具到非常复杂的安全命令,在Linux上没有太多不能做的事情。而且,虽然普通桌面用户可能不需要在命令行熟悉这些工具,但他们对于Linux管理员来说是强制性的。为什么?首先,你需要在某个时候使用无GUI的Linux服务器。其次,命令行工具通常比其替代方案提供更多的功能和灵活性。

技术分享图片

 

  确定内存使用率是一项技能,您可能需要一个特定的应用程序和系统内存。发生这种情况时,知道您有多种工具可以帮助您排除故障,这很方便。或者,也许您需要收集有关Linux交换分区的信息或有关您安装的RAM的详细信息?还有一些命令。让我们深入了解各种Linux命令行工具,以帮助您检查系统内存使用情况。这些工具并非难以使用,在本文中,我会向您展示五种解决问题的方法。

 

  我将在UbuntuServer18.04平台上进行演示。但是,您应该在您选择的发行版中找到所有这些命令。更好的是,你不需要安装一件东西(因为大多数这些工具都包含在内)。

 

  我想用最明显的工具开始。命令提供了一个正在运行的系统的一个动态的,实时的图。包含在该系统摘要中的是能够按照每个进程检查内存使用情况。这非常重要,因为您可以轻松地对同一命令进行多次迭代,消耗不同数量的内存。虽然你不会在服务器上找到它,但是说你已经打开了Chrome并注意到你的系统变慢了。发出顶级命令以查看Chrome有多个进程正在运行(每个选项卡一个-图1)。

技术分享图片

 

  图1:出现在顶部命令中的Chrome的多个实例。

 

  Chrome并不是唯一显示多个进程的应用程序。你看到图1中的Firefox条目?这是Firefox的主要流程,而WebContent流程是开放的标签。在输出的顶部,您会看到系统统计信息。在我的机器上,我总共有16GB可用RAM,其中刚刚超过10GB。然后,您可以梳理整个列表并查看每个进程正在使用的内存百分比。

 

  其中一件事顶部是被发现,可能已经失去控制服务的进程ID(PID)号码非常好。使用这些PID,您可以设置故障排除(或杀死)违规任务。

 

  如果你想让top变得更友善一些,请发出命令top-o%MEM,这会导致top按所用内存对所有进程进行排序(图2)。

技术分享图片

 

  图2:顶部使用的内存排序过程。

 

  该顶部命令也给你多少你的交换空间正在使用的实时更新。

 

  然而,有时候,顶端可能会满足您的需求。您可能只需查看系统上可用和已用内存的数量。为此,有免费的命令。自由命令显示:

 

  可用和已用物理内存总量

  系统中交换内存的总量

  内核使用的缓冲区和缓存

 

  在终端窗口中,免费发布命令。该命令的输出不是实时的。相反,您将获得的是当时免费和已用内存的即时快照(图3)。

技术分享图片

 

  图3:free命令的输出简单明了。

 

  当然,您可以通过添加-m选项来免费更方便用户,如下所示:free-m。这将以MB为单位报告内存使用情况(图4)。

技术分享图片

 

  图4:以更易读的形式输出free命令。

 

  当然,如果你的系统甚至是远程现代的,你可能想要使用-g选项(千兆字节),就像free-g一样。

 

  如果你需要内存总数,你可以像这样添加t选项:free-mt。这将简单地总计列中的内存量(图5)。

技术分享图片

 

  图5:为您提供免费的总内存列。

 

  另一个非常方便的工具是vmstat。这个特殊的命令是报告虚拟内存统计信息的一招小马。该vmstat的命令将在报告统计:

 

  流程

  记忆

  分页

  块IO

  陷阱

  磁盘

  中央处理器

 

  发出vmstat的最好方法是使用-s开关,如vmstat-s。这将在单个列中报告您的统计信息(比默认报告更容易阅读)。该的vmstat命令会给你更多的信息比你需要(图6),但更多的是总是更好(在这种情况下)。

技术分享图片

 

  图6:使用vmstat命令检查内存使用情况。

 

  如果你想了解有关已安装的系统RAM的详细信息,该怎么办?为此,您可以使用dmidecode命令。这个特定的工具是DMI表格解码器,它将系统的DMI表格内容转储为可读格式。如果您不确定DMI表的内容,则可以用它来描述系统的构成(以及系统可能的演变)。

 

  要运行dmidecode命令,您确实需要sudo权限。所以发出命令sudodmidecode-t17。命令的输出(图7)可能很长,因为它显示所有内存类型设备的信息。因此,如果您无法滚动,可能需要将该命令的输出发送到文件中,如下所示:sudodmidecode-t17>dmi_infoI,或者将其输入less命令,如sudodmidecode。

技术分享图片

 

  图7:dmidecode命令的输出。

 

  你可能会问自己:“这些命令从哪里得到这些信息?”。在某些情况下,他们从/proc/meminfo文件中获取它。你猜怎么了?您可以使用less/proc/meminfo命令直接读取该文件。通过使用less命令,您可以通过冗长的输出上下滚动以准确找到您需要的内容(图8)。

技术分享图片

 

  图8:less/proc/meminfo命令的输出。

 

  有一件事你应该知道/proc/meminfo:这不是一个真正的文件。相反/pro/meminfo是一个虚拟文件,其中包含有关系统的实时动态信息。特别是,您需要检查以下值:

 

  MemTotal

  MemFree

  MemAvailable

  缓冲区

  缓存

  SwapCached

  SwapTotal

  SwapFree

 

  如果你想使用/proc/meminfo,你可以像egrep命令一样使用它:egrep--color‘Mem|Cache|Swap‘/proc/meminfo。这将产生一个易于阅读的包含Mem,Cache和Swap...的所有条目的列表(图9)。

技术分享图片

 

  图9:使/proc/meminfo更易于阅读。

 

  保持学习,你应该做的第一件事情之一是阅读每个命令的手册页。(黑客周刊)

以上是关于Linux中检查内存使用情况的命令的主要内容,如果未能解决你的问题,请参考以下文章

free:一个在 Linux 中检查内存使用情况的标准命令

Linux系统命令 - 查看内存使用情况

检查LINUX内存使用情况

查看占用内存最多的进程

linux 常用命令

玩转Linux命令free来了