Mostra o uso da CPU usando um comando [duplicado]

16

Eu quero ver o uso da CPU.
Eu usei este comando:

top -bn1 | grep "Cpu(s)" | 
           sed "s/.*, *\([0-9.]*\)%* id.*//" | 
           awk '{print 100 - }'

Mas ele retorna 100%.
Qual é o caminho correto?

    
por Morteza Soltanabadiyan 18.04.2014 / 21:47

3 respostas

10

Para obter o uso da CPU, a melhor maneira é ler o arquivo / proc / stat. Veja man 5 proc para mais ajuda.

Existe um script útil escrito por Paul Colby que eu encontrei aqui

#!/bin/bash
# by Paul Colby (http://colby.id.au), no rights reserved ;)

PREV_TOTAL=0
PREV_IDLE=0

while true; do

  CPU=('cat /proc/stat | grep '^cpu '') # Get the total CPU statistics.
  unset CPU[0]                          # Discard the "cpu" prefix.
  IDLE=${CPU[4]}                        # Get the idle CPU time.

  # Calculate the total CPU time.
  TOTAL=0

  for VALUE in "${CPU[@]:0:4}"; do
    let "TOTAL=$TOTAL+$VALUE"
  done

  # Calculate the CPU usage since we last checked.
  let "DIFF_IDLE=$IDLE-$PREV_IDLE"
  let "DIFF_TOTAL=$TOTAL-$PREV_TOTAL"
  let "DIFF_USAGE=(1000*($DIFF_TOTAL-$DIFF_IDLE)/$DIFF_TOTAL+5)/10"
  echo -en "\rCPU: $DIFF_USAGE%  \b\b"

  # Remember the total and idle CPU times for the next check.
  PREV_TOTAL="$TOTAL"
  PREV_IDLE="$IDLE"

  # Wait before checking again.
  sleep 1
done

salve-o em cpu_usage , adicione a permissão de execução chmod +x cpu_usage e execute:

./cpu_usage

para parar o script, pressione Ctrl + c

    
por girardengo 19.04.2014 / 00:01
34

Por que não usar htop [visualizador interativo de processos]? Para instalá-lo, abra uma janela de terminal e digite:

sudo apt-get install htop

Veja também man htop para mais informações e como configurá-lo.

    
por v2r 25.05.2014 / 16:26
6

Eu encontrei uma solução que funciona bem, aqui está:

top -bn2 | grep '%Cpu' | tail -1 | grep -P  '(....|...) id,' 

Não tenho certeza, mas parece que a primeira iteração de top com o parâmetro -n retorna alguns dados fictícios, sempre o mesmo em todos os meus testes.

Se eu usar -n2 , o segundo quadro será sempre dinâmico. Então a sequência é:

  1. Obtenha os dois primeiros quadros do topo: top -bn2
  2. Em seguida, a partir desses quadros, use somente as linhas que contêm '% Cpu': grep '%Cpu'
  3. Então, pegue somente a última ocorrência / linha: 'tail -1' '
  4. Em seguida, obtenha o valor inativo (tem 4 ou 5 caracteres, um espaço, "id"): grep -P '(....|...) id,'

Espero que ajude, Paul

    
por Paul 24.08.2016 / 16:21