如何使用shell获取linux中多个子进程的总内存?
http守护进程,例如: 我使用ps aux | grep httpd | grep-v grep:如何使用shell获取linux中多个子进程的总内存?,linux,bash,shell,memory,Linux,Bash,Shell,Memory,http守护进程,例如: 我使用ps aux | grep httpd | grep-v grep: USER PID RSS COMMAND root 14347 3220 /usr/sbin/httpd apache 14348 2400 /usr/sbin/httpd apache 14349 2400 /usr/sbin/httpd apache 14350 2400 /usr/sbin/httpd 我可以简单地累积RSS
USER PID RSS COMMAND
root 14347 3220 /usr/sbin/httpd
apache 14348 2400 /usr/sbin/httpd
apache 14349 2400 /usr/sbin/httpd
apache 14350 2400 /usr/sbin/httpd
我可以简单地累积RSS字段以获得[httpd]的总内存使用量。3220+2400+2400+2400=10420
但我知道,子进程有共享内存。这里有一些冗余计算。实际上,总内存使用量可能小于10420
我的问题是如何获得实际的内存使用情况 如果需要获取实际内存使用情况,则需要在Valgrind之类的探查器中运行它 参考文献 可能是您最准确的选择,但使用起来可能有点笨拙,而且由于性能原因,对于生产系统来说是不合理的(实际上没有)
Smem()是一个不太复杂的替代方案
PSS
进程集大小是您需要的。我在Chrome上使用了以下命令:
ps aux | grep chrome | grep -v grep | awk '{s+=$5} END {print s}'
请注意,$5实际上可能会有所不同,这取决于ps aux
实际显示其输出的方式。这可能对您有用,也可能不有用,还以字节为单位显示总使用量。您可以尝试pmap$(pgrep httpd)
-它提供虚拟内存地址空间信息。