GNU/Linux >> Linux Esercitazione >  >> Linux

Come posso visualizzare l'utilizzo della memoria di ciascun processo se eseguo un 'ps -ef'?

La risposta di @ user26528 non calcola correttamente la memoria:è necessaria la somma delle mappature in smaps, non solo quella superiore. Questo script dovrebbe farlo:

#!/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

ps ef -o command,vsize,rss,%mem,size

Non sono riuscito a trovare un'opzione per la memoria condivisa, ma ho trovato opzioni per% della memoria fisica totale e la quantità di spazio di scambio che sarebbe necessario per sostituire il processo. Questo e molto altro è documentato nella pagina man di ps.


Elenca i processi in base all'utilizzo della memoria

ps -e -orss=,args=| ordina -b -k1,1n


Linux
  1. Come controllare l'utilizzo della memoria del processo con il comando pmap di Linux

  2. Come visualizzare i risultati `top` ordinati in base all'utilizzo della memoria in tempo reale?

  3. Qual è lo scopo di ciascuno dei diversi UID che un processo può avere?

  4. In una shell Linux come posso elaborare ogni riga di una stringa multilinea?

  5. Come posso anteporre una stringa all'inizio di ogni riga in un file?

Come posso misurare l'effettivo utilizzo della memoria di un'applicazione o di un processo?

Come calcolare l'utilizzo della CPU di un processo tramite PID in Linux da C?

Come profilare l'utilizzo della memoria?

Come posso conoscere il percorso assoluto di un processo in esecuzione?

Se conosco il numero PID di un processo, come posso ottenere il suo nome?

Come monitorare l'utilizzo della memoria dedicata al kernel?