当前位置: 首页 > 科技观察

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

时间:2023-03-14 00:47:06 科技观察

检查系统内存使用情况是Linux管理员的一项重要技能。杰克给出了五种不同的方法来解决这个问题。Linux操作系统包括大量工具,所有这些工具都可以帮助您管理系统。从简单的文件和目录工具到非常复杂的安全命令,在Linux中无所不能。而且,虽然普通桌面用户可能不需要熟悉这些命令行工具,但它们对于Linux管理员来说是必须的。为什么?首先,您有时不得不使用没有GUI的Linux服务器。其次,命令行工具通常比GUI工具提供更多的功能和灵活性。确定内存使用情况是您可能需要的一项技能,尤其是当应用程序行为异常并占用系统内存时。发生这种情况时,知道有多种工具可帮助您排除故障会很方便。或者您可能需要收集有关Linux交换分区的信息,或有关已安装内存的详细信息?这些也有相应的命令。让我们深入了解各种Linux命令行工具,以帮助您检查系统内存使用情况。这些工具并不难用,在本文中我将向您展示五种不同的方法。我将在Ubuntu18.04服务器平台上进行演示,但您应该找到与您选择的发行版相对应的所有命令。更好的是,您不需要安装任何东西(因为大多数这些工具都包含在您的Linux系统中)。话虽如此,让我们开始工作吧。top我想从最常用的工具开始。top命令提供了运行系统的实时动态视图,它检查每个进程的内存使用情况。这非常重要,因为您可以很容易地看到同一命令的多个实例消耗不同的内存量。虽然您无法在没有显示器的服务器上看到这一点,但您已经注意到打开Chrome会降低您的系统速度。运行top命令以查看Chrome有多个进程在运行(每个选项卡一个-图1)。图1:多个Chrome进程出现在top命令中。Chrome并不是唯一显示多个进程的应用程序。您看到图1中的Firefox了吗?这是Firefox的主要进程,WebContent进程是其打开的选项卡。在输出的顶部,您将看到系统统计信息。在我的机器(System76LeopardExtreme)上,我总共有16GB的RAM可用,其中刚刚超过10GB被使用。然后您可以对该列表进行排序以查看每个进程使用的内存百分比。top的最佳位置之一是发现可能已经失控的服务的进程ID号(PID)。有了这些PID,您就可以解决(或终止)有问题的任务。如果你想让top显示更多内存友好的信息,使用命令top-o%MEM,这将使top根据进程使用的内存对所有进程进行排序(图2)。图2:在top命令中按已用内存对进程进行排序top命令还可以实时更新正在使用的交换空间量。free但是,有时,top命令可能无法满足您的需求。您可能只需要查看系统的可用和已用内存。为此,Linux也有free命令。free命令显示:可用和已用物理内存的总量系统中交换内存的总量内核使用的缓冲区和高速缓存在终端窗口中,输入free命令。它的输出不是实时的,相反,您将获得当前可用和已用内存的即时快照(图3)。图3:free命令的输出很简单。当然,你可以通过添加-m选项让free更友好一点,就像这样:free-m。这将以MB为单位显示内存使用情况(图4)。图4:以更易读的形式显示的自由命令输出。当然,如果你的系统很新,你会想要使用-g选项(以GB为单位),比如free-g。如果需要知道内存总量,可以加上-t选项,如:free-mt。这将简单地计算每列中的内存总量(图5)。图5:为您提供空闲内存列。vmstat另一个非常方便的工具是vmstat。这个特殊的命令是报告虚拟内存统计信息的一个小技巧。vmstat命令将报告:ProcessMemoryPagingBlockingIOInterruptDiskCPU使用vmstat的最佳方法是使用-s选项,如vmstat-s。这将在单个列中报告统计信息(比默认报告更容易阅读)。vmstat命令将提供比您需要的更多的信息(图6),但越多越好(在本例中)。图6:使用vmstat命令检查内存使用情况。dmidecode如果您想查找有关已安装系统内存的详细信息怎么办?为此,您可以使用dmidecode命令。这个特殊的工具是DMI表解码器,它将系统的DMI表内容转储为人类可读的格式。如果您不知道DMI表是什么,只要说它可以用来描述系统的组成(及其演化)就足够了。要运行dmidecode命令,您需要sudo权限。因此输入命令sudodmidecode-t17。此命令的输出(图7)可能会很长,因为它显示了所有内存类型设备的信息。因此,如果您不能上下滚动,您可能需要将该命令的输出发送到一个文件,如:sudodmidecode-t17>dmi_infoI,或将其通过管道传输到less命令,如sudodmidecode|较少的。图7:dmidecode命令的输出。/proc/meminfo您可能会问自己,“这些命令从哪里获得这些信息?”在某些情况下,他们从/proc/meminfo文件中获取它。你猜怎么了?您可以使用命令less/proc/meminfo直接读取此文件。通过使用less命令,您可以上下滚动长输出以准确找到您需要的内容(图8)。图8:less/proc/meminfo命令的输出。您应该了解/proc/meminfo:它不是真正的文件。相反,/proc/meminfo是一个包含有关系统的实时动态信息的虚拟文件。具体而言,您需要检查以下值:总内存(MemTotal)可用内存(MemFree)可用内存(MemAvailable)缓冲区(Buffers)文件缓存(Cached)交换缓存(SwapCached)总交换区(SwapTotal)自由交换区(SwapFree)如果你想使用/proc/meminfo,你可以链接egrep命令来使用它:egrep--color'Mem|缓存|交换'/proc/meminfo。这将生成一个易于阅读的列表,其中Mem、Cache和Swap等条目将被着色(图9)。图9:使/proc/meminfo更易于阅读。继续您要做的第一件事是阅读每个命令的手册页(例如mantop、manfree、manvmstat、mandmidecode)。从命令的手册页开始学习如何在Linux上使用工具始终是一个好方法。