Como encontrar processos que usam mais RAM nos últimos X segundos?

0

Você poderia me ajudar a resolver isso? Eu estou tentando escrever um script bash que irá monitorar o uso de memória RAM (não só ram mas cpu e rede também) e me mostrar 3 processos que usam mais ram nos últimos X segundos? Eu sei que posso encontrar quais processos usam mais ram, executando o seguinte:

ps aux | awk '{print $2, $4, $11}' | sort -k2rn | head -n 3

Mas como isso pode ser repetido? Eu quero ver não a situação exatamente neste segundo, mas monitorar a situação para (deixe estar) 60 segundos e ver os 3 principais processos que estavam usando mais memória ram.

    
por Butterfly 15.04.2016 / 22:01

2 respostas

2

Eu uso o comando dstat . Muito útil. Explore-o usando man dstat

Por exemplo:

Encontre o mais caro em termos de memória a cada 3 segundos:

#dstat --top-mem 3 --most-expensive- memory process firefox 1430M firefox 1430M firefox 1431M firefox 1435M firefox 1435M firefox 1435M firefox 1435M firefox 1438M

Da mesma forma, você pode pontilá-lo para CPU, rede, E / S, etc.

dstat --top-cpu 3 -most-expensive- cpu process
firefox 3.5 firefox 4.5 firefox 2.4 firefox 2.6 firefox 2.8 firefox 2.0 firefox 2.8

    
por 16.04.2016 / 01:04
0

Comando dos 3 principais processos com fome de memória:

ps auxxx --sort = -rss | cabeça -4

Os principais processos com CPU de 3 processadores:

ps auxxx --sort = -% cpu | cabeça -4

Você pode executar esses scripts por meio do Cronjob a cada minuto.

          • /tmp/serverhealth.sh
por 17.04.2016 / 11:52