内存是影响电脑性能的重要硬件之一,所以在日常使用电脑的过程中,需要经常关注它的使用状况。Linux 系统有多种方式可以查看内存大小,并跟踪到内存的使用情况,本文总结了一些比较常见的方法。
开始之前说明一下,本文所说的方法仅涉及 Linux 系统自带或默认安装的工具,对于需要单独安装的第三方内存信息查看软件或命令,不在本文介绍的范围之内。比如 dmidecode
和 hwinfo
。
使用系统监视器
虽然说 Linux 系统用命令会比较快捷,但如果使用的是桌面版 Linux,这会是一个更加直观的选择。以我常用的 Gnome 桌面环境为例,它提供了一个名为「系统监视器(System Monitor)」的小工具。直接运行,就能以可视化的图表来观察到内存的使用情况。
在不同的 Linux 桌面环境下,软件名称可能会不一样。比如在 KDE,它可能叫 KSysGuard。但一定会有一个类似功能的软件。
使用 free 命令
对于习惯用终端,或是在 Linux 服务器环境上,就只能选择使用命令来查看内存使用情况。首先要推荐使用的就是 free
命令,建议加上 -h
选项,它会让命令的输出结果更方便查看。在我的电脑上命令输出如下:
❯ free -h
total used free shared buff/cache available
Mem: 31Gi 3.4Gi 24Gi 1.1Gi 2.9Gi 26Gi
Swap: 0B 0B 0B
这是一个简单的表格结构。第一行为表头,第二行为物理内存信息,第三行为虚拟交换内存。上面输出的信息可以看到,我当前的这台电脑内存有 31GB(total),已经用了 3.4GB(used),剩余可用大小为 26GB(available)。
使用 top 命令
top
是另外一个可以用来查看内存使用情况的命令。直接输入 top
命令后按回车键,就能看到如下界面:
在第 4 行,即 Mib Mem 开头的这行为内存使用信息,可以看到和 free
命令类似的输出结果,单位为 MB。不过有所不同的是,top
命令每 3 秒就会自动刷新一次数据;而且在下面还有一个列表,其中的 %MEM
这一列提供了运行中程序所占用的内存大小。数字是百分比值,和总内存大小(total)进行换算可以得到程序大致使用的内存。
使用 /proc/meminfo 文件
在 Linux 系统上,一切皆文件。内存信息也能通过文件方式来查看。存放内存信息的文件位置为 /proc/meminfo,所以通过使用查看文件的命令来读取它的内容,也能实现获取内存信息的功能。
cat /proc/meminfo
命令输出结果很长,这里仅列举开头几行作为示例:
MemTotal: 32737172 kB
MemFree: 25040664 kB
MemAvailable: 26554608 kB
Buffers: 164280 kB
Cached: 3064824 kB
SwapCached: 0 kB
Active: 907548 kB
Inactive: 4452772 kB
Active(anon): 3672 kB
Inactive(anon): 3528512 kB
从名字就可以看出,MemTotal
是内存的总大小,MemFree
是未被使用的大小,MemAvailable
是可用大小。
使用 vmstat 命令
使用 vmstat
命令能得到的内存信息和使用 free
命令差不多。而且需要搭配 grep
命令筛选一下结果,否则会有其他信息干扰。建议使用的方式如下:
vmstat -s|grep memory
该命令会输出以下样式的结果:
❯ vmstat -s|grep memory
32737172 K total memory
4255132 K used memory
935848 K active memory
4317508 K inactive memory
25135556 K free memory
169456 K buffer memory
使用 lsmem 命令
使用 lsmem
命令可以查看内存的可用地址范围,区块大小,以及在线状态。这个命令提供的数据过于底层,对大多数人来说难得用上。命令默认的输出结果如下:
❯ lsmem
RANGE SIZE STATE REMOVABLE BLOCK
0x0000000000000000-0x000000007fffffff 2G online yes 0-15
0x0000000100000000-0x000000087fffffff 30G online yes 32-271
Memory block size: 128M
Total online memory: 32G
Total offline memory: 0B
总结
以日常观察内存使用情况的用途来说,上面列出的方法只需要选择一到两种方法即可。如果使用的是桌面端环境,可以优先考虑使用系统监视器,它能更直观的了解使用的内存大小,以及一段时间里内存使用波动,而且它也提供了和 top
命令一样的进程管理功能,用起来会很方便。free
命令和 top
命令很有掌握的必要,因为对于 Linux 服务器环境而言,默认只能选择它俩。