![mac/linux 터미널 - 프로세스와 모든 하위 프로세스의 총 메모리 사용량을 재귀적으로 어떻게 알 수 있습니까?](https://rvso.com/image/1554902/mac%2Flinux%20%ED%84%B0%EB%AF%B8%EB%84%90%20-%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%99%80%20%EB%AA%A8%EB%93%A0%20%ED%95%98%EC%9C%84%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%9D%98%20%EC%B4%9D%20%EB%A9%94%EB%AA%A8%EB%A6%AC%20%EC%82%AC%EC%9A%A9%EB%9F%89%EC%9D%84%20%EC%9E%AC%EA%B7%80%EC%A0%81%EC%9C%BC%EB%A1%9C%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EC%95%8C%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
프로세스와 그 하위 프로세스가 얼마나 많은 메모리를 사용하고 있는지 알고 싶습니다. 단일 프로세스의 사용법을 아는 것은 때때로 유용하지 않습니다. 예를 들어 실행 중이고 모든 bash 프로세스와 실행 중인 모든 프로세스 및 기타 등등의 tmux
메모리 양을 합산하여 확인하려는 경우입니다 .vim
답변1
이것은 Linux에 대한 귀하의 질문에 대답해야 하지만 Mac에서 이를 수행하는 방법은 IDK입니다.
'ps -ef'를 수행하면 각 프로세스의 메모리 사용량을 어떻게 표시할 수 있나요?
이를 달성하기 위해 사용한 스크립트는 다음과 같습니다.
#!/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