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

kor*_*rda 10 process top

使用 top/htop 之类的工具时,有没有办法对类似的进程进行分组?有时我只想知道是什么在消耗我的内存,而一些程序(主要是浏览器)正在使用多个进程,这使得很难读取它们真正使用了多少 RAM。

到目前为止,我只想出了类似的东西:

ps ax -o pmem,cmd | grep opera | grep -oE '^[ ]*[0-9.]+' | paste -sd+ - | bc
Run Code Online (Sandbox Code Playgroud)

cas*_*cas 8

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

例如

ps -C opera
Run Code Online (Sandbox Code Playgroud)

然后您可以使用其他ps选项来提取您正在寻找的数据。特别是,h--no-headers抑制列标题,并-o pmem显示进程使用的内存百分比。

ps -C opera --no-headers -o pmem
Run Code Online (Sandbox Code Playgroud)

这会给你一堆内存使用百分比,每行一个。

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

把所有这些放在一起,你得到:

ps -C opera --no-headers -o pmem | xargs | sed -e 's/ /+/g' | bc
Run Code Online (Sandbox Code Playgroud)

或者

ps -C opera --no-headers -o pmem | paste -sd+ | bc
Run Code Online (Sandbox Code Playgroud)

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

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

ps -C iceweasel -C chromium -C opera
Run Code Online (Sandbox Code Playgroud)