Cómo ver el uso de memoria resumida de grupos de comandos (en lugar de procesos)
10
¿Hay alguna manera de agrupar procesos similares cuando se usan herramientas como top / htop? A veces solo quiero saber qué está consumiendo mi memoria y algunos programas (en su mayoría navegadores) están utilizando múltiples procesos, lo que dificulta la lectura de la cantidad de RAM que realmente usan.
Hasta ahora solo se me ocurrió algo así:
ps ax -o pmem,cmd | grep opera | grep -oE '^[ ]*[0-9.]+' | paste -sd+ - | bc
Puede usar ps -Cpara mostrar solo información de proceso para un nombre de comando en particular.
p.ej
ps -C opera
Luego puede usar otras psopciones para extraer solo los datos que está buscando. En particular, ho --no-headerspara suprimir los encabezados de columna, y -o pmempara mostrar el porcentaje de memoria utilizada por el proceso.
ps -C opera --no-headers -o pmem
Eso le dará un montón de porcentajes de uso de memoria, uno por línea.
Existen numerosos métodos para sumar datos como ese, uno de los métodos que uso con frecuencia es canalizarlo en xargs para convertirlo en una línea con elementos delimitados por espacios, luego en sed para convertir espacios en +símbolos y luego bcpara realizar el cálculo. Su método de conexión paste -sd+funciona bien o podría decirse que mejor | xargs | sed.
Al poner todo eso en conjunto, obtienes:
ps -C opera --no-headers -o pmem | xargs | sed -e 's/ /+/g' | bc
o
ps -C opera --no-headers -o pmem | paste -sd+ | bc
En otras palabras, puede usar en ps -Clugar de múltiples greps si solo desea datos sobre un programa en ejecución en particular.
NOTA: Puede usar múltiples -Copciones en la misma línea de comando si desea información sobre más de un programa a la vez. p.ej
¡Yay, primera persona que realmente entendió / leyó mi pregunta!
korda
El único problema que veo con este enfoque es que algunos programas tienen el mismo comando y, sin embargo, no me gustaría agruparlos (por ejemplo, java ... y como soy desarrollador de Java, generalmente tengo al menos algunos programas Java en ejecución). Supongo que no hay una solución perfecta ...
korda
siempre hay, ps h -C java -o pmem,args | awk '/foo/ {print $1}' | ...por ejemplo, buscar un programa java llamado foo.
He intentado que esto funcione y no me dio resultados interesantes. Por ejemplo, solo muestra un programa, y no es el que ocupa la mayor parte de la memoria
korda
¿Lo es? Bueno, ¿quieres algo como top? en caso afirmativo, puede modificar el script con un retraso de 2 o 1 segundo y ejecutar lo mismo en algún momento o por un tiempo. Para mí, muestra la aplicación de uso de memoria más alta en el momento en que ejecuto este script. qué tipo de cosas está intentando, simplemente ejecute: ps af -o pmem, cmd | sort -r Te dará la aplicación de uso de
memoria
No está funcionando para mi. Supongo que la razón es que ese tipo incluye espacios en blanco principales
korda
¿Quiere decir que no está recibiendo el nombre correcto del proceso?
RahulAN
Sí, porque ps agrega espacios a las sangrías. Cuando un proceso tiene un uso de 2 dígitos, los valores de uso de un dígito se sangrarán y comenzarán con un espacio inicial. Supongo que agregar algo como sed -e 's/^[[:space:]]*//'debería solucionarlo. ¿También su script agrega el uso de memoria de los procesos con el mismo comando?
korda
0
Desde el interior de la parte superior puede usar lo siguiente:
Press SHIFT+f
Press the Letter corresponding to %MEM
Press ENTER
Tenga en cuenta que actualmente no se carga en PyPI , y también solo se puede instalar en todo el sistema ( setup.pyestá un poco roto), como sudo pip install https://github.com/tobimensch/termsql/archive/master.zip.
ps h -C java -o pmem,args | awk '/foo/ {print $1}' | ...
por ejemplo, buscar un programa java llamado foo.Puedes hacer un script de shell
Esto le dará la aplicación de mayor uso de memoria.
fuente
sed -e 's/^[[:space:]]*//'
debería solucionarlo. ¿También su script agrega el uso de memoria de los procesos con el mismo comando?Desde el interior de la parte superior puede usar lo siguiente:
También puedes probar:
Este comando dará los 5 procesos principales por uso de memoria.
¡Espero que encuentres útil esta información!
fuente
Esto se puede simplificar con termsql .
Tenga en cuenta que actualmente no se carga en PyPI , y también solo se puede instalar en todo el sistema (
setup.py
está un poco roto), comosudo pip install https://github.com/tobimensch/termsql/archive/master.zip
.fuente