mirror of
https://github.com/LCTT/TranslateProject.git
synced 2025-01-22 23:00:57 +08:00
parent
ad47dc8e0e
commit
8ae86ff1b3
@ -3,71 +3,64 @@
|
||||
[#]: author: "Tomasz Waraksa https://opensource.com/users/tomasz"
|
||||
[#]: collector: "lujun9972"
|
||||
[#]: translator: "geekpi"
|
||||
[#]: reviewer: " "
|
||||
[#]: publisher: " "
|
||||
[#]: url: " "
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-13918-1.html"
|
||||
|
||||
用这个 Linux 命令行工具获取内存使用统计信息
|
||||
用 smem 命令获取内存使用统计信息
|
||||
======
|
||||
smem 命令允许你快速查看你的 Web 应用的内存使用情况。
|
||||
![Programming at a browser, orange hands][1]
|
||||
|
||||
在我的编程工作中,我经常需要了解网络应用的内存使用情况。在深入研究细节和浏览器剖析工具之前,一个粗略的估计通常就足够了。
|
||||
> smem 命令允许你快速查看你的网页应用的内存使用情况。
|
||||
|
||||
为了询问 Linux 或 macOS 上的内存使用情况,人们通常使用 [top][2] 或 [htp][3]。我很想看到一个单一的数字:一个进程占用了多少内存。但这些工具所显示的统计数据可能很难理解。对于网络浏览器来说,它甚至更加复杂,因为它们经常运行许多独立的进程。它们都在 top 输出中显示为一个长长的列表,每一个都有自己的单独指标。
|
||||
![](https://img.linux.net.cn/data/attachment/album/202110/25/101843emjjkmvk88gvyqgv.jpg)
|
||||
|
||||
在我的编程工作中,我经常需要了解网页应用的内存使用情况。在深入研究细节和浏览器剖析工具之前,一个粗略的估计通常就足够了。
|
||||
|
||||
为了了解 Linux 或 macOS 上的内存使用情况,人们通常使用 [top][2] 或 [htop][3]。我很想看到一个单一的数字:一个进程占用了多少内存。但这些工具所显示的统计数据可能很难理解。对于网页浏览器来说,它甚至更加复杂,因为它们经常运行许多独立的进程。它们在 `top` 输出中显示为一个长长的列表,每一个都有自己的单独指标。
|
||||
|
||||
![Memory usage using htop][4]
|
||||
|
||||
(Tomasz Waraksa, [CC BY-SA 4.0][5])
|
||||
|
||||
### 输入 smem 命令
|
||||
### smem 命令
|
||||
|
||||
幸运的是有 [smem][6],另一个用于查看内存使用统计的命令行工具。用你选择的包管理器安装它,例如:
|
||||
|
||||
|
||||
```
|
||||
`sudo apt install smem`
|
||||
sudo apt install smem
|
||||
```
|
||||
|
||||
要获得 [Firefox][7] 的总内存使用量,请执行:
|
||||
|
||||
|
||||
```
|
||||
`smem -c pss -P firefox -k -t | tail -n 1`
|
||||
smem -c pss -P firefox -k -t | tail -n 1
|
||||
```
|
||||
|
||||
这里发生了什么?
|
||||
这些开关做了什么?
|
||||
|
||||
* `-c` 开关指定要显示的列。我只对 _pss_ 列感兴趣,它显示一个进程分配的内存。
|
||||
* `-P` 开关过滤进程,只包括那些名字里有 _firefox_ 的进程。
|
||||
* `-k` 开关显示以 MB/GB 为单位的内存使用情况,而不是单纯的字节数
|
||||
* `-t` 开关显示总数
|
||||
* `-c` 开关指定要显示的列。我只对 `pss` 列感兴趣,它显示一个进程分配的内存。
|
||||
* `-P` 开关过滤进程,只包括那些名字里有 `firefox` 的进程。
|
||||
* `-k` 开关显示以 MB/GB 为单位的内存使用情况,而不是单纯的字节数。
|
||||
* `-t` 开关显示总数。
|
||||
* `tail -n 1` 过滤器只输出最后一行,也就是总数的地方。
|
||||
|
||||
|
||||
|
||||
输出是非常简单的:
|
||||
|
||||
|
||||
```
|
||||
$ smem -t -k -c pss -P firefox | tail -n 1
|
||||
4.9G
|
||||
```
|
||||
|
||||
开门见山! 而且,经过又一天忙碌的工作,打开了 50 多个选项卡,Firefox 仍然只使用 5 GB。看看吧,Google Chrome ;-)
|
||||
开门见山!而且,经过又一天忙碌的工作,打开了 50 多个选项卡,Firefox 仍然只使用 5 GB。看看吧,Google Chrome。
|
||||
|
||||
#### 用一个脚本更容易
|
||||
|
||||
为了方便起见,创建一个名为 `memory-use` 的小脚本,它将进程名称作为参数。我把所有的脚本都放在 `~/bin`里,所以:
|
||||
|
||||
为了方便起见,我创建一个名为 `memory-use` 的小脚本,它将进程名称作为参数。我把所有的脚本都放在 `~/bin` 里,所以:
|
||||
|
||||
```
|
||||
`echo 'smem -c pss -P "$1" -k -t | tail -n 1' > ~/bin/memory-use && chmod +x ~/bin/memory-use`
|
||||
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
|
||||
@ -81,24 +74,20 @@ memory-use slack
|
||||
比如:
|
||||
|
||||
```
|
||||
`smem --pie name -c pss`
|
||||
smem --pie name -c pss
|
||||
```
|
||||
|
||||
显示类似这样的内容:
|
||||
|
||||
![Pie chart output from smem][8]
|
||||
|
||||
(Tomasz Waraksa, [CC BY-SA 4.0][5])
|
||||
|
||||
关于更多的细节,我建议查看 [smem 手册页][6]。
|
||||
|
||||
你可以在 <https://linoxide.com/memory-usage-reporting-smem/> 上找到另一个很棒的教程。
|
||||
|
||||
享受吧!
|
||||
希望你喜欢!
|
||||
|
||||
* * *
|
||||
|
||||
_本文最初出现在[作者的博客][9]上,并经许可转载。_
|
||||
本文最初发表在[作者的博客][9]上,并经许可转载。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
@ -107,7 +96,7 @@ via: https://opensource.com/article/21/10/memory-stats-linux-smem
|
||||
作者:[Tomasz Waraksa][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
Loading…
Reference in New Issue
Block a user