Como exibir o uso resumido da memória de grupos de comandos (em vez de processos)
10
Existe uma maneira de agrupar processos semelhantes ao usar ferramentas como top / htop? Às vezes, eu só quero saber o que está consumindo minha memória e alguns programas (principalmente os navegadores) estão usando vários processos, o que dificulta a leitura da quantidade de RAM que eles realmente usam.
Até agora, eu vim apenas com algo assim:
ps ax -o pmem,cmd | grep opera | grep -oE '^[ ]*[0-9.]+' | paste -sd+ - | bc
Você pode usar ps -Cpara exibir apenas informações do processo para um nome de comando específico.
por exemplo
ps -C opera
Você pode usar outras psopções para extrair apenas os dados que está procurando. Em particular, hou --no-headerspara suprimir os cabeçalhos das colunas e -o pmemmostrar a porcentagem de memória usada pelo processo.
ps -C opera --no-headers -o pmem
Isso fornecerá várias porcentagens de uso de memória, uma por linha.
Existem inúmeros métodos para somar dados como esse, um dos métodos que eu uso com freqüência é canalizá-los para xargs para convertê-los em uma linha com elementos delimitados por espaços, depois em sed para converter espaços em +símbolos e depois bcexecutar o Cálculo. Seu método de canalizar paste -sd+funciona tão bem ou sem dúvida melhor que | xargs | sed.
Juntando tudo isso, você obtém:
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 em ps -Cvez de vários greps se quiser apenas dados sobre um programa em execução específico.
NOTA: Você pode usar várias -Copções na mesma linha de comando se desejar obter informações sobre mais de um programa por vez. por exemplo
Yay, primeira pessoa que realmente entendeu / leu minha pergunta!
22415
O único problema que vejo com essa abordagem é que alguns programas têm o mesmo comando e, no entanto, eu não gostaria de agrupá-los (por exemplo, java ... e, como sou desenvolvedor de java, normalmente tenho pelo menos alguns programas java em execução). Eu acho que não existe uma solução perfeita ... #
22415
sempre há, ps h -C java -o pmem,args | awk '/foo/ {print $1}' | ...por exemplo, para procurar um programa java chamado foo.
Eu tentei fazer isso funcionar e não me deu resultados interessantes. Por exemplo ele mostra apenas um programa, e não é o único a tomar a maior parte da memória
korda
É isso? Bem, você quer algo como top ?? se sim, você pode modificar o script com atraso de 2 ou 1 s e executar a mesma coisa em algum tempo ou durante. Para mim, mostra o aplicativo de uso de memória mais alto no momento em que executo esse script. que tipo de coisa você está tentando, basta executar: ps af -o pmem, cmd | tipo -r Ele lhe dará a maior aplicação de uso mem
Rahulan
Não está funcionando para mim. Eu acho que a razão é que esse tipo inclui os principais espaços em branco #
22415
Quer dizer que você não está recebendo o nome correto do processo?
Rahulan
Sim, porque o ps adiciona espaços ao recuo. Quando um processo tem uso de 2 dígitos, os valores de uso de um dígito serão recuados e começarão com espaço à esquerda. Eu acho que adicionar algo como sed -e 's/^[[:space:]]*//'deveria corrigi-lo. Seu script também adiciona o uso de processos de memória com o mesmo comando?
22415
0
De dentro para cima, você pode usar o seguinte:
Press SHIFT+f
Press the Letter corresponding to %MEM
Press ENTER
Observe que, atualmente, ele não é carregado no PyPI e também pode ser instalado em todo o sistema ( setup.pyestá um pouco quebrado), como sudo pip install https://github.com/tobimensch/termsql/archive/master.zip.
ps h -C java -o pmem,args | awk '/foo/ {print $1}' | ...
por exemplo, para procurar um programa java chamado foo.Você pode criar um script de shell
Isso fornecerá o aplicativo de maior uso de mem.
fonte
sed -e 's/^[[:space:]]*//'
deveria corrigi-lo. Seu script também adiciona o uso de processos de memória com o mesmo comando?De dentro para cima, você pode usar o seguinte:
Você também pode tentar:
Este comando fornecerá os 5 principais processos por uso de memória.
Espero que você ache essas informações úteis!
fonte
Isso pode ser simplificado com termsql .
Observe que, atualmente, ele não é carregado no PyPI e também pode ser instalado em todo o sistema (
setup.py
está um pouco quebrado), comosudo pip install https://github.com/tobimensch/termsql/archive/master.zip
.fonte