GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo puedo mostrar el uso de memoria de cada proceso si hago un 'ps -ef'?

La respuesta de @ user26528 no calcula la memoria correctamente:necesita la suma de las asignaciones en smaps, no solo la superior. Este script debería hacerlo:

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

No pude encontrar una opción para la memoria compartida, pero encontré opciones para el % de la memoria física total y la cantidad de espacio de intercambio que se necesitaría para intercambiar el proceso. Esto y mucho más está documentado en la página man de ps.


Listar procesos por uso de memoria

ps -e -orss=, argumentos=| ordenar -b -k1,1n


Linux
  1. ¿Cómo monitorear el uso de la memoria dedicada al kernel?

  2. ¿Cómo puedo configurar la afinidad del procesador de un proceso en Linux?

  3. ¿Cómo puedo observar el ancho de banda de la memoria?

  4. ¿Cómo limitar el uso de la memoria de la aplicación?

  5. ¿Cómo puedo obtener la hora del reloj de pared de un proceso en ejecución?

¿Cómo mostrar los resultados "principales" ordenados por uso de memoria en tiempo real?

¿Cuál es el propósito de cada uno de los diferentes UID que puede tener un proceso?

¿Cómo calcular el uso de CPU de un proceso por PID en Linux desde C?

¿Cómo perfilar el uso de la memoria?

¿Cómo puedo saber la ruta absoluta de un proceso en ejecución?

Si conozco el número PID de un proceso, ¿cómo puedo obtener su nombre?