zoukankan      html  css  js  c++  java
  • 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更易于阅读。

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

  • 相关阅读:
    父子进程 signal 出现 Interrupted system call 问题
    一个测试文章
    《淘宝客户端 for Android》项目实战 html webkit android css3
    Django 中的 ForeignKey ContentType GenericForeignKey 对应的数据库结构
    coreseek 出现段错误和Unigram dictionary load Error 新情况(Gentoo)
    一个 PAM dbus 例子
    漫画统计学 T分数
    解决 paramiko 安装问题 Unable to find vcvarsall.bat
    20141202
    js
  • 原文地址:https://www.cnblogs.com/hacker520/p/9191229.html
Copyright © 2011-2022 走看看