GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo encontrar el uso de la memoria del usuario en Linux

Este one-liner funcionó para mí en al menos cuatro sistemas Linux diferentes con diferentes distribuciones y versiones. También funcionó en FreeBSD 10.

ps hax -o rss,user | awk '{a[$2]+=$1;}END{for(i in a)print i" "int(a[i]/1024+0.5);}' | sort -rnk2

Acerca de la implementación, aquí no hay construcciones de bucle de shell; esto usa una matriz asociativa en awk para hacer la agrupación y la suma.

Aquí hay una salida de muestra de uno de mis servidores que ejecuta MySQL, Tomcat y Apache de tamaño decente. Las cifras están en MB.

mysql 1566
joshua 1186                                                                                  
tomcat 353                                                                                   
root 28                                                                                      
wwwrun 12                                                                                    
vbox 1                                                                                       
messagebus 1                                                                                 
avahi 1                                                                                      
statd 0                                                                                      
nagios 0

Advertencia:como la mayoría de las soluciones similares, esto solo considera el conjunto residente (RSS), por lo que no cuenta ningún segmento de memoria compartida.

EDITAR :Una versión más legible por humanos.

echo "USER                 RSS      PROCS" ; echo "-------------------- -------- -----" ; ps hax -o rss,user | awk '{rss[$2]+=$1;procs[$2]+=1;}END{for(user in rss) printf "%-20s %8.0f %5.0f\n", user, rss[user]/1024, procs[user];}' | sort -rnk2

Y la salida:

USER                 RSS      PROCS
-------------------- -------- -----
mysql                    1521     1
joshua                   1120    28
tomcat                    379     1
root                       19   107
wwwrun                     10    10
vbox                        1     3
statd                       1     1
nagios                      1     1
messagebus                  1     1
avahi                       1     1

Uso de memoria por usuario en porcentaje usando herramientas estándar:

for _user in $(ps haux | awk '{print $1}' | sort -u)
do
    ps haux | awk -v user=${_user} '$1 ~ user { sum += $4} END { print user, sum; }'            
done

o para mayor precisión:

TOTAL=$(free | awk '/Mem:/ { print $2 }')
for _user in $(ps haux | awk '{print $1}' | sort -u)
do
    ps hux -U ${_user} | awk -v user=${_user} -v total=$TOTAL '{ sum += $6 } END { printf "%s %.2f\n", user, sum / total * 100; }'
done

La primera versión solo resume el porcentaje de memoria para cada proceso según lo informado por ps . La segunda versión suma la memoria en bytes y luego calcula el porcentaje total, lo que conduce a una mayor precisión.


Si su sistema es compatible, intente instalar y usar smem:

smem -u

User     Count     Swap      USS      PSS      RSS 
gdm          1        0      308      323      820 
nobody       1        0      912      932     2240 
root        76        0   969016  1010829  1347768 

o

smem -u -t -k

User     Count     Swap      USS      PSS      RSS 
gdm          1        0   308.0K   323.0K   820.0K 
nobody       1        0   892.0K   912.0K     2.2M 
root        76        0   937.6M   978.5M     1.3G 
ameskaas    46        0     1.2G     1.2G     1.5G 
           124        0     2.1G     2.2G     2.8G 

En Ubuntu, smem se puede instalar escribiendo

sudo apt install smem

Linux
  1. Cómo usar BUSCAR en Linux

  2. Uso de memoria de Linux

  3. Cómo encontrar todos los usuarios de Sudo en Linux

  4. Cómo verificar el uso de memoria en un servidor basado en Linux

  5. ¿Cómo se informa el uso de la memoria en Linux?

Cómo encontrar la dirección IP en Linux

Cómo encontrar el nombre de host en Linux

Cómo saber a qué grupos pertenece un usuario en Linux

Cómo encontrar los principales procesos en ejecución por uso de memoria

Cómo cambiar de usuario en Linux

Cómo encontrar los principales procesos en ejecución por memoria y uso de CPU en Linux