2009-08-26 10 views
29

Come posso determinare l'utilizzo corrente della CPU dalla shell in Linux?Come posso determinare l'utilizzo corrente della CPU dalla shell?

Per esempio, ho ottenere la media del carico in questo modo:

cat /proc/loadavg 

Uscite:

0.18 0.48 0.46 4/234 30719 
+0

Solo FYI, la media del carico non è l'utilizzo della CPU, sebbene possa mostrare indirettamente l'utilizzo della CPU. È un numero che mostra quanti processi sono in esecuzione ma in attesa di risorse, che si tratti di CPU o disco o qualcos'altro. – hhaamu

+0

Sono consapevole di questo. In realtà, commento una risposta in tal senso. – Joel

risposta

23

Linux non ha alcuna variabile di sistema che fornisce l'attuale utilizzo della CPU. Invece, devi leggere/proc/stat più volte: ogni colonna nelle linee della cpu (n) fornisce il tempo totale della CPU, e devi prendere le letture successive per ottenere percentuali. Vedi this document per scoprire cosa significano le varie colonne.

+0

Se questo è vero, allora perché funziona la risposta di Space? – Brain2000

+1

Perché la risposta dello spazio non funziona. Restituisce l'utilizzo medio della CPU dall'inizio del processo e * non * l'utilizzo * corrente * della CPU. * Questa * risposta è corretta. – scai

-4

È necessario campionare il carico medio per diversi secondi e calcolare l'utilizzo della CPU da quello. Se non sei sicuro di ciò che fai, prendi le fonti del "top" e leggilo.

+1

Grazie - ma non c'è modo di calcolare l'utilizzo della CPU dalla media del carico. – Joel

+0

In realtà c'è, ancora, letto la fonte. Penso che la media del carico sia la derivata dell'utilizzo della CPU, per cui è necessario creare una sorta di integrale per ottenere l'utilizzo della CPU. Non c'è modo migliore di spiegarlo - usa la fonte Luck. – elcuco

4

Forse qualcosa di simile

ps -eo pid,pcpu,comm 

E se vi piace analizzare e magari guardare solo alcuni processi.

#!/bin/sh 
ps -eo pid,pcpu,comm | awk '{if ($2 > 4) print }' >> ~/ps_eo_test.txt 
23

È possibile utilizzare i comandi top o ps per verificare l'utilizzo della CPU.

utilizzando top: Questo ti mostrerà la CPU stats

top -b -n 1 |grep ^Cpu 

usando ps: Questo ti mostrerà l'utilizzo della CPU% per ogni processo.

ps -eo pcpu,pid,user,args | sort -r -k1 | less 

Inoltre, è possibile scrivere un piccolo script in bash o perl per leggere/proc/stat e calcolare l'utilizzo della CPU.

+2

Abbiamo provato e "top -b -n 1" fornisce risultati molto imprecisi. La prima iterazione di "top" è molto approssimativa, può dare il 10 percento invece di 60. –

+0

Aumentare il numero di iterazioni con -n> 1 essere più preciso? Hai testato questo caso? – Christian

+4

Il calcolo di top di% CPU è diverso dal calcolo di% CPU di ps. guarda questa risposta http://unix.stackexchange.com/questions/58539/top-and-ps-not-showing-the-same-cpu-result – BozoJoe

4

Provate questo comando:

cat /proc/stat 

questo sarà qualcosa di simile:

cpu 55366 271 17283 75381807 22953 13468 94542 0 
cpu0 3374 0 2187 9462432 1393 2 665 0 
cpu1 2074 12 1314 9459589 841 2 43 0 
cpu2 1664 0 1109 9447191 666 1 571 0 
cpu3 864 0 716 9429250 387 2 118 0 
cpu4 27667 110 5553 9358851 13900 2598 21784 0 
cpu5 16625 146 2861 9388654 4556 4026 24979 0 
cpu6 1790 0 1836 9436782 480 3307 19623 0 
cpu7 1306 0 1702 9399053 726 3529 26756 0 
intr 4421041070 559 10 0 4 5 0 0 0 26 0 0 0 111 0 129692 0 0 0 0 0 95 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 369 91027 1580921706 1277926101 570026630 991666971 0 277768 0 0 0 0 0 0 0 0 0 0 0 0 0 
ctxt 8097121 
btime 1251365089 
processes 63692 
procs_running 2 
procs_blocked 0 

Maggiori dettagli:

http://www.mail-archive.com/[email protected]/msg01690.html http://www.linuxhowtos.org/System/procstat.htm

8

Il comando uptime ti dà lo medie dell'annuncio per gli ultimi 1, 5 e 15 minuti.

Problemi correlati