用这个Linux命令行工具获得内存使用的统计数据的方法

165 阅读2分钟

在我的编程工作中,我经常需要了解网络应用的内存使用情况。在深入研究细节和浏览器剖析工具之前,一个粗略的估计通常就足够了。

为了查询Linux或macOS上的内存使用情况,人们通常使用tophtp。我很想看到一个单一的数字:一个进程占用了多少内存。但这些工具所显示的统计数据可能很难理解。对于网络浏览器来说,这甚至更加复杂,因为它们经常运行许多独立的进程。它们都在顶部输出中显示为一个长长的列表,每个都有自己的单独指标。

Memory usage using htop

幸运的是,有一个smem,另一个用于查看内存使用统计的命令行工具。例如,在你选择的软件包管理器中安装它。

sudo apt install smem

要获得Firefox的总内存使用量,请执行。

smem -c pss -P firefox -k -t | tail -n 1

这里发生了什么?

  • -c switch指定要显示的列。我只对pss列感兴趣,它显示进程分配的内存。
  • -P switch 过滤进程,只包括那些名字里有Firefox的进程。
  • -k switch告诉我们用mega/gigabytes来显示内存的使用,而不是简单的字节数。
  • -t switch显示总数
  • tail -n 1 过滤器只输出最后一行,也就是总数的地方。

该输出是最简单的。

$ smem -t -k -c pss -P firefox | tail -n 1
4.9G

直奔主题!而且,在又一个繁忙的工作日之后,有超过50个打开的标签,Firefox仍然只用了5GB。接招吧,谷歌浏览器;-)

用一个脚本更容易

为了方便起见,创建一个名为memory-use 的小脚本,它将进程名称作为一个参数。我把我所有的脚本都放在~/bin ,所以。

echo 'smem -c pss -P "$1" -k -t | tail -n 1' > ~/bin/memory-use && chmod +x ~/bin/memory-use

现在我可以很容易地测量任何应用程序的内存使用情况。

memory-use firefox
memory-use chrome
memory-use slack

还有更多

该工具不仅可以显示总的内存使用情况。它甚至可以生成图形输出。

比如说。

smem --pie name -c pss

显示类似这样的东西。

Pie chart output from smem

关于更多的细节,我建议你看看smem的手册