![Mac-/Linux-Terminal – Wie ermitteln Sie rekursiv die gesamte Speichernutzung eines Prozesses und aller seiner untergeordneten Prozesse?](https://rvso.com/image/1554902/Mac-%2FLinux-Terminal%20%E2%80%93%20Wie%20ermitteln%20Sie%20rekursiv%20die%20gesamte%20Speichernutzung%20eines%20Prozesses%20und%20aller%20seiner%20untergeordneten%20Prozesse%3F.png)
Ich möchte herausfinden, wie viel Speicher ein Prozess und seine untergeordneten Prozesse verwenden. Manchmal ist es nicht hilfreich, die Speichernutzung eines einzelnen Prozesses zu kennen, z. B. wenn Sie einen tmux
laufenden Prozess haben und wissen möchten, wie viel Speicher alle Bash-Prozesse plus alle vim
laufenden S usw. zusammengerechnet haben.
Antwort1
Dies sollte Ihre Frage für Linux beantworten, aber ich weiß nicht, wie das auf einem Mac geht.
Wie kann ich die Speichernutzung jedes Prozesses anzeigen, wenn ich „ps -ef“ ausführe?
Hier ist das Skript, das sie hierfür verwendet haben:
#!/bin/bash
for pid in $(ps -ef | awk '{print $2}'); do
if [ -f /proc/$pid/smaps ]; then
echo "* Mem usage for PID $pid"
rss=$(awk 'BEGIN {i=0} /^Rss/ {i = i + $2} END {print i}' /proc/$pid/smaps)
pss=$(awk 'BEGIN {i=0} /^Pss/ {i = i + $2 + 0.5} END {print i}' /proc/$pid/smaps)
sc=$(awk 'BEGIN {i=0} /^Shared_Clean/ {i = i + $2} END {print i}' /proc/$pid/smaps)
sd=$(awk 'BEGIN {i=0} /^Shared_Dirty/ {i = i + $2} END {print i}' /proc/$pid/smaps)
pc=$(awk 'BEGIN {i=0} /^Private_Clean/ {i = i + $2} END {print i}' /proc/$pid/smaps)
pd=$(awk 'BEGIN {i=0} /^Private_Dirty/ {i = i + $2} END {print i}' /proc/$pid/smaps)
echo "-- Rss: $rss kB"
echo "-- Pss: $pss kB"
echo "Shared Clean $sc kB"
echo "Shared Dirty $sd kB"
echo "Private $(($pd + $pc)) kB"
fi
done