如何查看命令组(而不是进程)的摘要内存使用情况


10

使用top / htop之类的工具时,是否可以将类似的流程分组?有时我只想知道什么在消耗我的内存,而某些程序(大多数是浏览器)正在使用多个进程,这使得很难读取它们真正使用了多少RAM。

到目前为止,我只想到了这样的东西:

ps ax -o pmem,cmd | grep opera | grep -oE '^[ ]*[0-9.]+' | paste -sd+ - | bc

Answers:


7

您可以使用ps -C来仅显示特定命令名称的过程信息。

例如

ps -C opera

然后,您可以使用其他ps选项仅提取您要查找的数据。特别地,h--no-headers抑制列标题,和-o pmem显示的存储器进程使用的百分比。

ps -C opera --no-headers -o pmem

这将给您一堆内存使用率,每行一个。

有很多方法可以像这样对数据求和,我经常使用的方法之一是将其通过管道传递到xargs中,以将其转换为由空格分隔的元素的一行,然后转换为sed以将空格转换为+符号,然后bc执行计算。您使用管道的方法paste -sd+效果很好,甚至可以说比更好| xargs | sed

将所有这些放在一起,您将获得:

ps -C opera --no-headers -o pmem | xargs | sed -e 's/ /+/g' | bc

要么

ps -C opera --no-headers -o pmem | paste -sd+ | bc

换句话说,ps -C如果您只想要有关一个特定正在运行的程序的数据,则可以使用而不是多次使用。

注意:-C如果您想一次获得有关多个程序的信息,则可以在同一命令行上使用多个选项。例如

ps -C iceweasel -C chromium -C opera

是的,第一位真正了解/阅读我的问题的人!
korda

我用这种方法看到的唯一问题是某些程序具有相同的命令,但是我不想对它们进行分组(例如java ...,由于我是Java开发人员,所以我通常至少要运行几个Java程序)。我猜没有完美的解决方案……
korda 2015年

总会有ps h -C java -o pmem,args | awk '/foo/ {print $1}' | ...例如寻找一个名为foo的Java程序。
cas 2015年

0

您可以制作一个shell脚本

#!/bin/bash
Total=`cat /proc/meminfo | head -n1 | awk '{print $2}'`
max_usage=`ps ax -o pmem,fname | sort -r | head -n2 | tail -n1 | awk '{print $1}'`
name=`ps ax -o pmem,fname | sort -r | head -n2 | tail -n1 | awk '{print $NF}'`
echo "$Total $max_usage $name"
echo "($max_usage*$Total)/(100*1024)" | bc

这将提供最高的内存使用率应用程序。


我试图使它正常工作,但并没有给我带来令人感兴趣的结果。例如,它仅显示一个程序,而不是占用大部分内存的程序
korda

是吗?好吧,您想要像top之类的东西吗?如果是,那么您可以延迟2或1秒修改脚本,并在一段时间内或一段时间内运行相同的脚本。对我来说,它在我运行此脚本时显示出最高的内存使用率应用程序。您正在尝试什么样的东西,只需运行:ps af -o pmem,cmd | sort -r它会为您提供最高的内存使用率应用程序
RahulAN 2015年

它对我不起作用。我想原因是排序包含了领先的空格
korda 2015年

您的意思是您没有获得正确的进程名称?
RahulAN 2015年

是的,因为ps为缩进内容添加了空格。当一个进程使用2位数字时,将缩进一位数字的使用值,并以前导空格开头。我想添加类似的东西sed -e 's/^[[:space:]]*//'应该解决它。您的脚本还会用同一命令累加进程的内存使用吗?
科尔达,2015年

0

从内部顶部可以使用以下内容:

Press SHIFT+f
Press the Letter corresponding to %MEM
Press ENTER

您也可以尝试:

ps -eo pmem,pcpu,vsize,pid,cmd | sort -k 1 -nr | head -5

该命令将按内存使用量列出前5个进程。

希望该信息对您有所帮助!


0

这可以用termsql简化。

ps -C chromium-browser -o pmem | termsql -1 "SELECT SUM([%MEM]) FROM tbl"

请注意,目前它尚未上载到PyPI,也只能在系统范围内安装(setup.py有点破损),例如sudo pip install https://github.com/tobimensch/termsql/archive/master.zip

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.