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 > >