Acesso direto ao conteúdo
Logotipo Dicas-L, por Ricardo Burile

Busca

Visite também: Segurança Linux ·  UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

Você está aqui: Home  → Arquivo Dicas-L

 

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

Analisando a carga de um processo através de gráficos, em shell script!

Colaboração: Pedro R. Bomente Filho

Data de Publicação: 15 de Outubro de 2009

Algumas vezes me deparei com dúvidas relacionadas à carga de CPU que determinado processo tem exigido. Muitas vezes quando testamos algum novo software essa dúvida é iminente. Uma outra situação comum é quando precisamos escolher entre dois softwares e não existe um review sobre os mesmos na rede.

Diante essa necessidade, surgiu-me a ideia de monitorar determinado processo de tempos em tempos para sanar minhas intrigas quanto ao gasto de CPU. Para isso, criei um script o qual tem a finalidade de gerar resultados em um arquivo *.csv. A partir daí, seria fácil manipular os dados. Posteriormente, aprimorando o script recém nascido, pensei: "Por que não criar um gráfico também?!".

Nesse contexto, desenvolvi um script que me foi muito útil. Lá vai!

Inicializações de variáveis:

  I='0'
  # O PID do processo vem como parâmetro 1
  PID=$1
  # O tempo pelo qual o script vai analisar o processo vem como parâmetro 2
  let TEMPO="$2 * 6"
  CSV="/tmp/dadosVerificaProcesso`echo $PID`.CSV"
  GRAFICO="/tmp/grafico`echo $PID`.png"

Gerando o arquivo *.csv:

  while [ "$I" -lt "$TEMPO" ]; do
  ps aux | grep $PID > /tmp/verificaProcesso`echo $PID`.tmp
        while read linha; do
                if [ `echo $linha | awk -F" " '{print $2}'` = "$PID" ];then
                        CPU=$(echo $linha | awk -F" " '{ print $3}')
                        # pode-se também gerar gráficos referentes ao uso de memória
                        mem=$(echo $linha | awk -F" " '{print $4}')
                        echo "$i $CPU" >> /tmp/dadosVerificaProcesso`echo $PID`.CSV
                fi
        done < /tmp/verificaProcesso`echo $PID`.tmp
        sleep 10
        let I="$I + 1"
  done

Montando o gráfico utilizando o gnuplot:

  echo "set terminal png size 400,300" > /tmp/gnuplot`echo $PID`.tmp
  echo "set output '$GRAFICO'" >> /tmp/gnuplot`echo $PID`.tmp
  echo "set grid y" >> /tmp/gnuplot`echo $PID`.tmp
  echo "set title 'Analise Processo $PID'" >> /tmp/gnuplot`echo $PID`.tmp
  echo "set ylabel '%CPU'" >> /tmp/gnuplot`echo $PID`.tmp
  echo "set xlabel 'tempo'" >> /tmp/gnuplot`echo $PID`.tmp
  echo "plot '$CSV' t'' with lines" >> /tmp/gnuplot`echo $PID`.tmp
  gnuplot /tmp/gnuplot`echo $PID`.tmp

A patir daí você pode abrir o gráfico de qualquer computador. Por exemplo analisar determinado processo em um servidor remoto, o script poderia enviar o gráfico por e-mail ao fim do processo.

Pedro R. Bomente Filho é Pesquisador no Laboratório de Pesquisa em Segurança de Redes e Computadores ACME! - IBILCE/UNESP.

Veja a relação completa dos artigos de Pedro R. Bomente Filho

Formato PDF
Newsfeed RSS
Formato para impressão
PDF RSS Imprimir

Referências Adicionais

Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.

Avalie esta dica

  • Currently 3.02/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.0 /5 (1128 votos)

Opinião dos Leitores

PERCIO RICARDO BOMENTE
28 Set 2011, 20:39
PARABENS PELA MATÉRIA. ME FOI MUITO ÚTIL EM MEDIR PROCESSOS, ESTABELECENDO PARA MIM NOVOS PARÂMETROS PARA ANÁLISES DE CONTEÚDO PROGRAMÁTICO DE RESISTÊNCIAS SUPERFICIAIS QUE POR VEZES PARECEM FICAR SUB OCULTADAS.
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script
Lan University

Submarino.com.br

Encontre imóveis, apartamentos e casas a venda no Imobilien
Saiba mais

 

 

Procure pela casa ou apartamento ideal à venda ou para aluguel na busca inteligente do Imohoo
Buscar imóveis