Mostra l'utilizzo della CPU usando un comando [duplicato]

17

Voglio vedere l'utilizzo della CPU.
Ho usato questo comando:

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

Ma restituisce il 100%.
Qual è il modo corretto?

    
posta Morteza Soltanabadiyan 18.04.2014 - 21:47

3 risposte

11

Per ottenere l'utilizzo della CPU, il modo migliore è leggere / proc / stat file. Vedi man 5 proc per ulteriore aiuto.

C'è una sceneggiatura utile scritta da Paul Colby che ho trovato qui

#!/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

salvalo su cpu_usage , aggiungi il permesso di esecuzione chmod +x cpu_usage ed esegui:

./cpu_usage

per interrompere lo script, premi Ctrl + c

    
risposta data girardengo 19.04.2014 - 00:01
36

Perché non utilizzare htop [visualizzatore di processi interattivi]? Per installarlo, apri una finestra di terminale e digita:

sudo apt-get install htop

Vedi anche man htop per ulteriori informazioni e come configurarlo.

    
risposta data v2r 25.05.2014 - 16:26
6

Ho trovato una soluzione che funziona bene, eccola:

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

Non sono sicuro, ma mi sembra che la prima iterazione di top con il parametro -n restituisca alcuni dati fittizi, sempre uguali in tutti i miei test.

Se utilizzo -n2 , il secondo frame è sempre dinamico. Quindi la sequenza è:

  1. Ottieni i primi 2 fotogrammi in alto: top -bn2
  2. Quindi da quei frame prendi solo le righe che contengono '% Cpu': grep '%Cpu'
  3. Quindi prendi solo l'ultima occorrenza / linea: 'tail -1' '
  4. Quindi ottieni il valore di inattività (ha 4 o 5 caratteri, uno spazio, "id"): grep -P '(....|...) id,'

Spero che aiuti, Paul

    
risposta data Paul 24.08.2016 - 16:21

Leggi altre domande sui tag