如何找到所有进程(包括子进程)的总内存使用量PPID
(1)。对于像 nginx/httpd 这样分叉多个子进程的程序,ps
/分别给出每个进程的内存使用量。我想知道/的总内存使用量,而不是单个子进程的top
内存使用量。nginx
apache
答案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
应显示每个服务的内存使用情况。但并不总是能获得这些信息。