按父进程分组的内存使用情况

Joy*_*abu 7 memory linux process centos-6

如何找到所有进程(包括子进程)的总内存使用情况,PPID为 1。对于像 nginx/httpd 这样分叉多个子进程的程序,ps/ 分别top给出每个进程的内存使用情况。我想知道nginx/apache而不是单个子进程的总内存使用量。

小智 10

如果你想要一些互动的东西,试试:

atop - launch it and press 'm' (memory usage) and 'p' (group by process name).
Run Code Online (Sandbox Code Playgroud)

如果你想要一些可编写脚本的东西,有一些类似于下面的东西 - 虽然它没有完全按照你的要求做(PPID 1),但你可以使用 awk 根据例如进程名称进行分组 -

ps -eo pmem,vsize,cmd | grep -v '\[' | awk 'NR>2{mem[$3]+=$2}END {for(k in mem) print k " " mem[k]/1024000};' | sort -gk 2 | tail -n 10
Run Code Online (Sandbox Code Playgroud)

可能有一些聪明的方法可以用 ps 过滤 ppid ......但我太愚蠢了,无法快速弄清楚。


use*_*686 1

在使用 systemd 的发行版上,systemd-cgls应该显示每个服务的内存使用情况。但并不总是获得信息。