Como visualizar o uso de memória sumarizada de grupos de comandos (em vez de processos)

9

Existe uma maneira de agrupar processos semelhantes ao usar ferramentas como top / htop? Às vezes, eu só quero saber o que está comendo minha memória e alguns programas (principalmente navegadores) estão usando vários processos, o que dificulta a leitura da quantidade de RAM que eles realmente usam.

Até agora eu apareci apenas com algo assim:

ps ax -o pmem,cmd | grep opera | grep -oE '^[ ]*[0-9.]+' | paste -sd+ - | bc
    
por korda 05.10.2015 / 07:23

4 respostas

5

Você pode usar ps -C para exibir apenas as informações do processo para um nome de comando específico.

por exemplo,

ps -C opera

Você pode usar outras opções ps para extrair apenas os dados que está procurando. Em particular, h ou --no-headers para suprimir os cabeçalhos de coluna e -o pmem para mostrar a porcentagem de memória usada pelo processo.

ps -C opera --no-headers -o pmem

Isso lhe dará um monte de porcentagens de uso de memória, uma por linha.

Existem vários métodos para somar dados como esse, um dos métodos que uso com frequência é canalizá-lo para xargs para convertê-lo em uma linha com elementos delimitados por espaços e depois em sed para converter espaços em + symbols, e depois em bc para executar o cálculo. Seu método de canalização para paste -sd+ funciona tão bem ou possivelmente melhor que | xargs | sed .

Juntando tudo isso, você recebe:

ps -C opera --no-headers -o pmem | xargs | sed -e 's/ /+/g' | bc

ou

ps -C opera --no-headers -o pmem | paste -sd+ | bc

Em outras palavras, você pode usar ps -C em vez de vários greps se quiser apenas dados sobre um programa em execução específico.

NOTA: Você pode usar várias opções de -C na mesma linha de comando se desejar informações sobre mais de um programa por vez. por exemplo,

ps -C iceweasel -C chromium -C opera
    
por 14.10.2015 / 06:44
0

Você pode criar um script de shell

#!/bin/bash
Total='cat /proc/meminfo | head -n1 | awk '{print $2}''
max_usage='ps ax -o pmem,fname | sort -r | head -n2 | tail -n1 | awk '{print $1}''
name='ps ax -o pmem,fname | sort -r | head -n2 | tail -n1 | awk '{print $NF}''
echo "$Total $max_usage $name"
echo "($max_usage*$Total)/(100*1024)" | bc

Isso dará o maior aplicativo de uso do mem.

    
por 09.10.2015 / 09:58
0

Do lado de dentro você pode usar o seguinte:

Press SHIFT+f
Press the Letter corresponding to %MEM
Press ENTER

Você também pode tentar:

ps -eo pmem,pcpu,vsize,pid,cmd | sort -k 1 -nr | head -5

Este comando fornecerá os 5 principais processos por uso de memória.

Espero que você ache esta informação útil!

    
por 12.10.2015 / 12:19
0

Isso pode ser simplificado com termsql .

ps -C chromium-browser -o pmem | termsql -1 "SELECT SUM([%MEM]) FROM tbl"

Note que, atualmente, não é feito o upload para o PyPI , e também só pode ser instalado em todo o sistema ( setup.py é um pouco quebrado), como sudo pip install https://github.com/tobimensch/termsql/archive/master.zip .

    
por 04.01.2018 / 22:48

Tags