Man, tem uma outra ferramenta parecida, o 'mpstat' [EMAIL PROTECTED] proc]# mpstat 1 9 | awk {'print $5'} | sed -n '1,2!p;s/^$//;' | nl
Se eu soubesse disso semestre passado... -- Raul Libório UniJorge Redes - www.redesfja.com rauhmarutsªhotmailºcom Linux user#4444581 Dúvidas: enviar para /dev/null 2008/8/26 Raul Libório <[EMAIL PROTECTED]>: > Uma recomendação: > > # --sar ( System Activty Reporter ) > [ http://www.dicas-l.com.br/dicas-l/20040424.php ] > > O sar provê informações semelhantes ao vmstat/iostat/netstat (esses > com algumas particularidades), embora seja mais completo e flexível. > Ocupa aproximadamente 750Kb de RAM, com uso aproximado de CPU em torno > de 0,25% causando um relativo pequeno impacto no sistema. Entre as > informações fornecidas pelo sar destacam-se: > > * Paginação: exibe freqüência de paginação em KB/s de dados lidos > e gravados (-w, -p) > * Buffer: uso, reinicialização e atividade do buffer (-b) > * Fila: atividade e uso da fila de processos (-q) > * CPU: exibe informações sobre relação uso da CPU por usuário x sistema > (-u) > * Memória: exibe como a memória está sendo utilizada (-g ou -k via > kernel allocation) > * Geral: coleta geral de todas informações providas via sar (-A) > > Ele pode ser encontrado no pacote 'Sysstat'. > Pra baixar: http://linux.softpedia.com/progDownload/Sysstat-Download-4621.html > Entao.. ao script :D > > #!/bin/bash > # coleta a porcentagem de uso de CPU em um dado momento > # 06.04.08 - GPL > #______________________________ > > dados="/tmp/process.log" > medias="/tmp/media.log" > > # --- Captura somente as linhas que contenham > # a media retornada, e filtra a coluna que indica > # processamento, salvando em arquivo. > > sar 1 10 -u | grep -i Average | \ > awk '{print $5}' > $dados > > # -- Captura somente a ultima linha, que contem a > # media geral das amostras retiradas no momento. > cat $dados | head -n 1 > $medias > > > # -- Guarda a porcentagem em uma variavel > MediaGeral=$( cat $medias ) > > > # Escreve a media no arquivo de log > echo MEDIA = $MediaGeral >> /var/log/processador.log > > > Eu usei esse script em um trabalho da faculdade, nao fui eu quem o > fez, MASSS, funciona :) > -- > > Raul Libório > UniJorge Redes - www.redesfja.com > rauhmarutsªhotmailºcom > Linux user#4444581 > > Dúvidas: enviar para /dev/null > > > > 2008/8/26 fernando_gottlieb <[EMAIL PROTECTED]>: >> Olá pessoal. >> Estive procurando uma maneira de obter o consumo de CPU e esbarrei em >> características do top, a primeira leitura é sempre a mesma. >> Continuando a procura por outra forma de obter este resultado, >> encontrei vários trechos de códigos mas nenhum conclusivo. >> Depois de algumas tentativas, consegui o que segue abaixo. >> Espero que ajude alguém. >> Gostaria, se possivel, de pedir sugestões para otimizá-lo. >> Segue o código: >> >> ### Escreve dados sobre uso do processador >> # Obtem duas leituras do comando top (top -b -d 0.5 -n2) >> # Separa apenas as linhas onde aparece o uso da cpu (| grep 'Cpu(s)') >> # Retira as strings contidas no inicio do texto contando dois espacos >> (| cut -f2- -d ' ') >> # Separa os dois primeiros parametros cortando os primeiros 18 >> caracteres (| cut -c1-18) >> # Substitui as strings %, u, s e y por espacos, deixando apenas as >> virugulas (| tr '%usy' ' ') >> var=$(top -b -d 0.5 -n2 | grep 'Cpu(s)' | cut -f2- -d ' ' | cut -c1-18 >> | tr '%usy' ' ') >> # Obtem o dado anterior a terceira virgula = user >> user=$(echo $var | cut -d, -f3) >> # Obtem o dado anterior a quarda virgula = sys >> sys=$(echo $var | cut -d, -f4) >> # Depois de obter o uso de cpu para usuario (%us = $user) e sistema >> (%sy = $sys) >> # faz a soma das variaveis usando bc (basic calculator) retirando o >> numero sem o ponto >> total=$(echo "$user + $sys" | bc | cut -d. -f1) >> echo '#cpu = '$total >> >> Abraços >> >> Fernando >> >> >