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