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

 

Zura! - Busque. Compare. Compre. Zura! - Busque. Compare. Compre.

Outras ofertas

TV LCD

TV Plasma

DVD Player

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

Stumble Upon Digg This Del.icio.us Twitter Recomendar este artigo a um amigo Entre em contato Formato PDF
Newsfeed RSS
Formato para impressão
StumbleUpon Digg Del.icio.us Twitter Recomendar Contato 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.00/5
  • 1
  • 2
  • 3
  • 4
  • 5

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

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*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
Twitter, Chiclete e Camisinha


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

Grupo MBS