Apenas RAM? Não trocar?
Eu fiz um trabalho de script sujo para isso:
Primeiro, precisamos analisar ps aux
output para obter mem, command e cpu, isso é feito nesse script perl:
@dados = 'ps aux';
for $i ( 0 .. $#dados ) {
@l = split('\s+', $dados[$i]);
$j = join(',',@l[1..9]);
print "$j,@l[ 10 .. $#l]\n";
}
A saída será um valor separado por vírgula, como será interpretado por um Rscript :
efile <- commandArgs(TRUE)
dados <- read.csv(efile[1])
mem<-sum(dados[3])
dados <- dados[order(dados[3],dados[4],decreasing=T),]
sprintf("%f %s",mem,dados[1, 'COMMAND'])
Este script faz o difícil de obter MEM e qual comando está usando mais MEM | CPU.
Na minha entrada crontab eu tenho a seguinte linha.
* * * * * perl $HOME/processstats.pl > $HOME/process.csv && Rscript --vanilla $HOME/mstats.R $HOME/process.csv >> $HOME/sysmemcpu.log
Com R você pode criar o gráfico, se necessário:
Desculpe se usei uma ferramenta não padrão para fazer as estatísticas.