GNU/Linux >> Linux Esercitazione >  >> Linux

Quali sono i metodi disponibili per ottenere l'utilizzo della CPU nella riga di comando di Linux?

Come altri hanno già detto, il modo migliore è probabilmente top . Ha bisogno di un po' di ritocco e di un po' di analisi, ma puoi ottenere che ti dia 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 analizzare il suo output. Tuttavia, come spiegato qui, la prima iterazione di top -b restituisce le percentuali dall'avvio, abbiamo quindi bisogno di almeno due iterazioni (-n 2 ) per ottenere la percentuale corrente. Per velocizzare le cose, puoi impostare il d elay tra le iterazioni a 0.01 . Infine, grep la riga contenente le percentuali della CPU e quindi utilizzare gawk per sommare utente, sistema e 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 ottenere queste informazioni anche tramite 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'intera durata di un processo" che non è ciò di cui hai bisogno.

MODIFICA

In base al tuo commento, la tua versione di top è diverso dal mio e dovresti usare questo invece:

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 localizzazione su C:

LC_ALL=C top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'

sar è il modo definitivo per farlo. Quindi, ad esempio, sar -u produrrà qualcosa di simile a questo:

08:30:01 AM       CPU     %user     %nice   %system   %iowait     %idle
08:40:01 AM       all      6.94      0.00      1.77      4.92     86.36
08:50:01 AM       all      5.73      0.00      2.31     12.72     79.24
09:00:01 AM       all      5.95      0.00      2.58     18.36     73.11
09:10:01 AM       all      6.88      0.00      2.22     17.44     73.45
09:20:01 AM       all      8.61      0.00      2.68     27.93     60.78

Non dici quale Linux usi ma per CentOS/RedHat devi installare sysstat pacchetto, e penso che sia lo stesso su Debian/Ubuntu.

Puoi anche utilizzare sar per raccogliere statistiche ad hoc :

sar -o /tmp/sar.out 60 600

Raccoglierà statistiche ogni 60 secondi 600 volte, quindi 600 minuti.


Linux
  1. Genera password sulla riga di comando di Linux

  2. Usando la forza sulla riga di comando di Linux

  3. Avere una mucca sulla riga di comando di Linux

  4. Entra nella riga di comando di Linux

  5. Ottieni di più dalla riga di comando di Linux con GNU Parallel

Patch in The Matrix dalla riga di comando di Linux

3 gestori di password per la riga di comando di Linux

Cos'è il comando Linux Watch + Esempi

Padroneggia la riga di comando di Linux

Qual è il comando kill in Linux?

Che cos'è uno strumento da riga di comando semplice e comune per mostrare l'utilizzo della rete su una macchina Linux?