Come altri hanno già detto, il modo migliore è probabilmente top
. Ha bisogno di un po 'di modifiche e un po' di analisi, ma puoi ottenerlo per darti l'attuale utilizzo della CPU in percentuale.
top
divide l'utilizzo della CPU tra utente, processi di sistema e nice
processi, vogliamo la somma dei tre. Quindi, possiamo eseguire top
in b
modalità atch che ci consente di analizzarne l'output. Tuttavia, come spiegato qui , la prima iterazione di top -b
restituisce le percentuali dall'avvio, quindi abbiamo bisogno di almeno due iterazioni ( -n 2
) per ottenere la percentuale corrente. Per velocizzare le cose, puoi impostare l' d
elay tra le iterazioni su 0.01
. Infine, grep
la riga che contiene le percentuali di CPU e quindi utilizza gawk
per sommare l'utente, il sistema e i processi piacevoli:
top -bn 2 -d 0.01 | grep '^%Cpu' | tail -n 1 | gawk '{print $2+$4+$6}'
----- ------ ----------- --------- ----------------------
| | | | |------> add the values
| | | |--> keep only the 2nd iteration
| | |----------------> keep only the CPU use lines
| |----------------------------> set the delay between runs
|-----------------------------------> run twice in batch mode
Ho pensato che potresti anche ottenere queste informazioni ps -o pcpu ax
aggiungendo la percentuale di utilizzo di ogni processo in esecuzione. Sfortunatamente, come spiegato qui , ps
"restituisce la percentuale di tempo trascorso in esecuzione durante l'intero ciclo di vita di un processo" che non è ciò di cui hai bisogno.
MODIFICARE
Sulla base del tuo commento, la tua versione di top
è diversa dalla mia e dovresti invece usare questa:
top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'
E, per evitare problemi con la localizzazione, imposta la locale su C:
LC_ALL=C top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'