Obtener el uso de memoria a través de ps es bastante poco confiable. Si tiene un kernel más nuevo, debería ser compatible con / proc / pid # / smaps que le brinda información detallada sobre el uso de memoria de cada proceso. A continuación se muestra una secuencia de comandos bastante sucia y rápida para recorrer cada proceso que está abierto y tomar el tamaño, Rss, Pss y uso compartido limpio / sucio. Esperemos que pueda ser útil de alguna manera.
#!/bin/bash
for pid in $(ps -ef | awk '{print $2}'); do
if [ -f /proc/$pid/smaps ]; then
echo "* Mem usage for PID $pid"
echo "-- Size:"
cat /proc/$pid/smaps | grep -m 1 -e ^Size: | awk '{print $2}'
echo "-- Rss:"
cat /proc/$pid/smaps | grep -m 1 -e ^Rss: | awk '{print $2}'
echo "-- Pss:"
cat /proc/$pid/smaps | grep -m 1 -e ^Pss: | awk '{print $2}'
echo "Shared Clean"
cat /proc/$pid/smaps | grep -m 1 -e '^Shared_Clean:' | awk '{print $2}'
echo "Shared Dirty"
cat /proc/$pid/smaps | grep -m 1 -e '^Shared Dirty:' | awk '{print $2}'
fi
done
ps ef -o command,vsize,rss,%mem,size
No pude encontrar una opción para la memoria compartida, pero sí encontré opciones para el% de memoria física total y la cantidad de espacio de intercambio que sería necesario para intercambiar el proceso. Esto y mucho más está documentado en la página del manual para ps.
fuente
top
,ps
y programas similares se ven afectados por esto de la misma manera.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:
fuente
Lista de procesos por uso de memoria
fuente
ps -e -orss=,pid=,args= | sort -b -k1,1n
para incluir la identificación del procesops
puede ordenar por su cuenta:ps -eo rss=,args= --sort +rss
puedes usar
fuente
Lista de procesos por uso de memoria
comando: ps -e -orss =, args = | ordenar -b -k1,1n | pr -TW $ COLUMNS \
fuente
Actualizar:
La siguiente línea también proporciona información sobre el consumo total de memoria del usuario actual.
Acabo de enumerar todos los procesos de usuario ordenados por el uso de memoria más alto en MB como este:
Puedes usar en
command=
lugar decomm=
mostrar el proceso de ruta completa.El
=
solo elimina el título de la columna.fuente
Descubrí que muchas veces el mismo proceso tiene un subproceso de fork y usted está interesado en la memoria total utilizada por el proceso. Por ejemplo, Google Chrome inicia un proceso múltiple y desea saber la memoria total tomada por Chrome. Encontré debajo de un comando de línea muy útil
Se encarga de muchas cosas, como mostrar memoria en MB, ordenar en memoria y principalmente agrupar por comando. También está agrupando% CPU y% memoria. Muestra datos en un formato fácil de usar.
Este comando se inspiró en esta respuesta y me ayudó mucho a tener una idea de qué proceso está consumiendo mis recursos.
fuente