terminal mac / linux - Como você encontra o uso total de memória de um processo, e todos os seus filhos recursivamente?

0

Eu gostaria de descobrir quanta memória um processo e seus filhos estão usando. Conhecer o uso de um único processo não é útil às vezes, por exemplo quando você tem tmux em execução e deseja ver quanta memória todos os processos do bash, além de todos os vim s em execução e outros - resumidos.

    
por Dylanthepiguy 02.03.2018 / 08:15

1 resposta

0

Isso deve responder sua pergunta para o Linux, mas o IDK como fazer isso em um mac.

> Como eu posso exibir o uso de memória de cada processo se eu fizer um 'ps -ef'?

Aqui está o script que eles usaram para realizar isso:

#!/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
    
por 02.03.2018 / 08:18