GNU/Linux >> Tutoriels Linux >  >> Linux

Comment puis-je afficher l'utilisation de la mémoire de chaque processus si je fais un 'ps -ef' ?

La réponse de @ user26528 ne calcule pas tout à fait correctement la mémoire - vous avez besoin de la somme des mappages dans smaps, pas seulement du haut. Ce script devrait le faire :

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

Je n'ai pas trouvé d'option pour la mémoire partagée, mais j'ai trouvé des options pour % de la mémoire physique totale et la quantité d'espace d'échange qui serait nécessaire pour échanger le processus. Ceci et bien plus encore est documenté dans la page de manuel de ps.


Lister les processus par utilisation de la mémoire

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


Linux
  1. Comment afficher les résultats "top" triés par utilisation de la mémoire en temps réel ?

  2. Comment puis-je mesurer l'utilisation réelle de la mémoire d'une application ou d'un processus ?

  3. Comment calculer l'utilisation CPU d'un processus par PID sous Linux à partir de C ?

  4. Dans un shell Linux, comment puis-je traiter chaque ligne d'une chaîne multiligne ?

  5. Comment observer la bande passante mémoire ?

Comment profiler l'utilisation de la mémoire ?

Comment puis-je ajouter une chaîne au début de chaque ligne dans un fichier ?

Comment puis-je connaître le chemin absolu d'un processus en cours d'exécution ?

Si je connais le numéro PID d'un processus, comment puis-je obtenir son nom ?

Utilisation maximale de la mémoire d'un processus

Comment l'utilisation de la mémoire est-elle signalée sous Linux ?