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

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

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

答案1

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

atop - launch it and press 'm' (memory usage) and 'p' (group by process name).

如果你想要一些可编写脚本的东西,那么有一些类似下面的内容 - 虽然它并没有完全按照你的要求执行(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

可能存在一些巧妙的方法可以使用 ps 过滤 ppid……但我太笨了,无法快速找到方法。

答案2

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

相关内容