De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
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!
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"
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
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.
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários