云网牛站
所在位置:首页 > Linux命令 > 检查Linux系统内存使用的五个命令盘点

检查Linux系统内存使用的五个命令盘点

2018-08-09 10:26:09作者:MjSeven稿源:LINUX中国站

对于 Linux 管理员来说,检查 Linux 系统的内存使用量情况是一个重要的技能。本文将介绍五个命令能用来检查 Linux 系统的内存使用:top、free、vmstat、dmidecode、/proc/meminfo,内容在 Ubuntu 18.04 服务器平台上亲测成功。

 

前言

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

确定内存使用情况是你可能需要的技能,尤其是某个应用程序变得异常和占用系统内存时。当发生这种情况时,知道有多种工具可以帮助你进行故障排除十分方便的。或者,你可能需要收集有关 Linux 交换分区的信息,或者有关安装的内存的详细信息?对于这些也有相应的命令。让我们深入了解各种 Linux 命令行工具,以帮助你检查系统内存使用情况。这些工具并不是非常难以使用,在本文中,我将向你展示五种不同的方法来解决这个问题。

我将在 Ubuntu 18.04 服务器操作系统上进行以下演示,但是你应该在你选择的发行版中找到对应的所有命令。更妙的是,你不需要安装任何东西(因为大多数这些工具都包含 Linux 系统中)。

 

一、top

我想从最常用的工具开始。top 命令提供正在运行的系统的实时动态视图,它检查每个进程的内存使用情况。这非常重要,因为你可以轻松地看到同一命令的多个示例消耗不同的内存量。虽然你无法在没有显示器的服务器上看到这种情况,但是你已经注意到打开 Chrome 使你的系统速度变慢了。运行 top 命令以查看 Chrome 有多个进程在运行(每个选项卡一个)。

检查Linux系统内存使用的五个命令盘点

Chrome 并不是唯一显示多个进程的应用。你看到上图中的 Firefox 了吗?那是 Firefox 的主进程,而 Web Content 进程是其打开的选项卡。在输出的顶部,你将看到系统统计信息。在我的机器上(System76 Leopard Extreme),我总共有 16GB 可用 RAM,其中只有超过 10GB 的 RAM 正在使用中。然后,你可以整理该列表,查看每个进程使用的内存百分比。

top 最好的地方之一就是发现可能已经失控的服务的进程 ID 号(PID)。有了这些 PID,你可以对有问题的任务进行故障排除(或 kill)。

如果你想让 top 显示更友好的内存信息,使用命令 top -o %MEM,这会使 top 按进程所用内存对所有进程进行排序。

检查Linux系统内存使用的五个命令盘点

top 命令还为你提供有关使用了多少交换空间的实时更新。

参考:top命令_Linux top命令使用详解:显示或管理执行中的程序

 

二、free

然而有时候,top 命令可能不能满足你的需求。你可能只需要查看系统的可用和已用内存。对此,Linux 还有 free 命令。free 命令显示:

1.可用和已使用的物理内存总量。

2.系统中交换内存的总量。

3.内核使用的缓冲区和缓存。

在终端窗口中,输入 free 命令。它的输出不是实时的,相反,你将获得的是当前空闲和已用内存的即时快照。

检查Linux系统内存使用的五个命令盘点

当然,你可以通过添加 -m 选项来让 free 显示得更友好一点,就像这样:free -m。这将显示内存的使用情况,以 MB 为单位。

检查Linux系统内存使用的五个命令盘点

当然,如果你的系统是很新的,你将希望使用 -g 选项(以 GB 为单位),比如 free -g。

如果你需要知道内存总量,你可以添加 -t 选项,比如:free -mt。这将简单地计算每列中的内存总量。

检查Linux系统内存使用的五个命令盘点

参考:free命令_Linux free命令使用详解:显示内存的使用情况

 

三、vmstat

另一个非常方便的工具是 vmstat。这个特殊的命令是一个报告虚拟内存统计信息的小技巧。vmstat 命令将报告关于:

1.进程

2.内存

3.分页

4.阻塞 IO

5.中断

6.磁盘

7.CPU

使用 vmstat 的最佳方法是使用 -s 选项,如 vmstat -s。这将在单列中报告统计信息(这比默认报告更容易阅读)。vmstat 命令将提供比你需要的更多的信息,但更多的总是更好的(在这种情况下)。

检查Linux系统内存使用的五个命令盘点

参考:vmstat命令_Linux vmstat命令使用详解:显示虚拟内存状态

 

四、dmidecode

如果你想找到关于已安装的系统内存的详细信息,该怎么办?为此,你可以使用 dmidecode 命令。这个特殊的工具是 DMI 表解码器,它将系统的 DMI 表内容转储成人类可读的格式。如果你不清楚 DMI 表是什么,那么可以这样说,它可以用来描述系统的构成(以及系统的演变)。

要运行 dmidecode 命令,你需要 sudo 权限。因此输入命令 sudo dmidecode -t 17。该命令的输出可能很长,因为它显示所有内存类型设备的信息。因此,如果你无法上下滚动,则可能需要将该命令的输出发送到一个文件中,比如:sudo dmidecode -t 17> dmi_infoI,或将其传递给 less 命令,如 sudo dmidecode | less。

检查Linux系统内存使用的五个命令盘点

参考:dmidecode命令_Linux dmidecode命令使用详解:在Linux系统下获取有关硬件方面的信息

 

五、/proc/meminfo

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

检查Linux系统内存使用的五个命令盘点

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

1.全部内存(MemTotal)

2.空闲内存(MemFree)

3.可用内存(MemAvailable)

4.缓冲区(Buffers)

5.文件缓存(Cached)

6.交换缓存(SwapCached)

7.全部交换区(SwapTotal)

8.空闲交换区(SwapFree)

如果你想使用 /proc/meminfo,你可以连接 egrep 命令使用它:egrep --color'Mem | Cache | Swap'/proc/meminfo。这将生成一个易于阅读的列表,其中包含 Mem、 Cache 和 Swap 等内容的条目将是彩色的。

检查Linux系统内存使用的五个命令盘点

 

使用man *命令得到更多信息

做为 Linux 管理员要做的第一件事就是阅读每个命令的手册页(例如 man top、man free、man vmstat、man dmidecode 等)。从命令的手册页开始了解,以得到更多的信息,这对了解该命令,了解怎样在 Linux 下使用一个工具非常重要,同时也是学习 Linux 的一个好方法。

 

相关主题

Linux专业知识四:Linux系统进程管理及查看内存

Linux命令子频道
精选文章
热门文章