Mostra i primi cinque processi che consumano CPU con `ps`


101

Come mostrare i primi cinque processi che consumano CPU con ps?

Risposte:


95

Perché usare psquando puoi farlo facilmente con il topcomando?

Se è necessario utilizzare ps, provare questo:

ps aux | sort -nrk 3,3 | head -n 5

Se vuoi qualcosa di veramente "top" con aggiornamenti costanti, usa watch

watch "ps aux | sort -nrk 3,3 | head -n 5"

3
ps aux | sort -k 3,3 | tail -n 5 ;-)
PlanasB,

1
sarà bene includere l'ordinamento numerico, per saltare l'intestazione di ps aux. ps aux | sort -nrk 3,3 | head -n 5
syss,

1
questo genera molti processi che richiedono più risorse ed è anche più incline alle condizioni di gara, perché quando i dati inviati vengono a capo dell'elenco dei processi potrebbe essere già cambiato
phuclv,

Questo è vero @ LưuVĩnhPhúc ma mi chiedo come questo differisca da come topfunziona effettivamente.
acqua ghiacciata,

1
@icedwater toplegge l'elenco dei processi e visualizza il risultato da solo senza eseguire il piping a nessun altro processo
phuclv,

87

La risposta corretta è :

ps --sort=-pcpu | head -n 6

Quindi puoi specificare le colonne senza interferire con l'ordinamento.

Ex:

ps -Ao user,uid,comm,pid,pcpu,tty --sort=-pcpu | head -n 6

Nota per MAC OS X : in Mac OS X, psnon riconosce --sort, ma offre -rdi ordinare in base all'utilizzo corrente della CPU. Pertanto, per Mac OS X è possibile utilizzare:

ps -Ao user,uid,comm,pid,pcpu,tty -r | head -n 6

3
Questa è la risposta corretta. Grazie Facundo. Stavo cercando di spiegare agli altri che puoi usare sort e pipe, ma ps viene anche integrato con un'opzione per l'ordinamento e ora vedo che lo usi anche tu, il che è fantastico.
Luis Alvarado,

Il secondo comando sembra più utile ... ma il primo sembra mostrare bash(x2 o headpure) ps...
Wilf

3
@Wilf Il primo è per evidenziare come ordinare in base al consumo della cpu senza usare il comando sort, il secondo mostra come specificare le colonne senza interferire con l'ordinamento. Quando si spiega qualcosa .. è sempre meglio essere concisi e spiegare una cosa alla volta.
Facundo Victor,

27

A seconda delle tue esigenze potresti trovare questo un po 'più leggibile:

ps -eo pcpu,pid,user,args --no-headers| sort -t. -nk1,2 -k4,4 -r |head -n 5

uscita campione:

 1.3     4 root     [ksoftirqd/0]
 1.1     9 root     [ksoftirqd/1]
 1.0 17606 nobody   /usr/sbin/gmetad
 1.0    13 root     [ksoftirqd/2]
 0.3 17401 nobody   /usr/sbin/gmond

(i campi sono% CPU, PID, UTENTE, COMANDO)


22

Non penso pssia quello che stai cercando. Hai visto l'output di top?

Se hai GNU-Top, prova a utilizzare la sua modalità batch per sputare un elenco di processi ordinato in base all'utilizzo della cpu e usando head / tail per ottenere le prime 5 righe (le prime 8 sono le intestazioni):

top -b -n 1 | head -n 12  | tail -n 5

La parte superiore di BSD sembra comportarsi diversamente e non ha una modalità non interattiva, quindi usa una delle altre pssoluzioni basate.


1
In OS X, è top -o cpu -n 5un modo per ottenere la stessa cosa. Qualcuno sa? Il mio topè diverso dal tuo top.
Boehj,

Sei quello con il top diverso, quindi saresti in grado di dire. La mia parte superiore non ha -oe -nimposta il numero di volte in cui aggiorna il display prima di uscire.
Caleb,

Giusto. Prenderò un box Linux questo pomeriggio e darò un'occhiata. Il mio topnon sembra avere una modalità batch, il che è abbastanza limitante. Ci deve essere un modo per eseguire il piping topin altri comandi. Farò qualche ricerca.
Boehj,

Ho menzionato il selettore della modalità batch nella mia risposta, ma in realtà non è necessario per il mio top perché rileva automaticamente di essere parte di una pipe invece di una sessione interattiva. Hai provato a collegarlo senza quello?
Caleb,

1
Andrà bene. GNU ha topfunzionato come descritto questo pomeriggio. Saluti.
Boehj,

6

Un liner più veloce che ho trovato per questo (nota 6 perché si aggiunge l'intestazione):

ps aux k-pcpu | head -6

5

Nota che le attuali versioni di ps hanno al loro interno capacità di ordinamento, basate su codici di campo (indicati nella pagina man di ps). Il codice campo per l'utilizzo del processore è "c". È possibile utilizzare --sort calla fine di un comando ps ad esps aux --sort c

Questo metterà il processo usando il maggior numero di CPU in fondo alla lista. Ordine inverso dell'elenco aggiungendo un segno meno al codice campo utilizzato per ordinare ad esps aux --sort -c


4

Per aggiungere un punto ad altre risposte preziose, preferisco:

ps auxk-c | head -6

Stampa anche l'intestazione, il che è carino.

Qui kè identico --sorte cspecifica il campo di utilizzo della CPU (alias %cpu) per l'ordinamento, mentre -è per l'ordinamento inverso.

Puoi aggiungere più identificatori separati da ,, altri identificatori possibili sono: %mem, args, bsdstart, pid, gid, uid... quale è possibile trovare l'elenco completo in STANDARD identificatori di formato sezione della pagina man. Per esempio:

 ps auxk -gid,-%mem | head -11

stamperebbe 10 processi con il massimo ID di gruppo, ordinati internamente in base all'utilizzo della memoria.


3

Lo strumento da riga di comando psha una propria opzione di ordinamento, quindi preferisco:

$ ps -eo pcpu,args --sort=-%cpu | head

Puoi aggiungere le colonne che desideri. Scopri quali altre opzioni sono disponibili nella pspagina man.

$ man ps

0

topsu Mac OS X ha un'opzione di modalità di registrazione sotto forma di top -l numberOfSamples(che sembra essere l'equivalente della modalità batch di GNU top). È necessario, tuttavia, avere almeno due campioni perché "il primo campione visualizzato avrà una% CPU non valida visualizzata per ciascun processo, poiché viene calcolata utilizzando il delta tra i campioni" ( man 1 top).

# examples
top -o cpu -l 2 -n 5 | tail -n 6
top -o cpu -l 2 -n 5 -stats pid,command,cpu | tail -n 6
top -o cpu -l 2 -n 5 -stats pid,command,cpu -U $(logname) | tail -n 6

0

topmostrerà cosa sta usando la tua CPU. Se lo hai installato, htopti consente un controllo più accurato, incluso il filtraggio per — nel tuo caso — CPU.


0

Credo che il modo più semplice per vedere i 5 principali processi di consumo di CPU sia,

ps -eo pid,comm,%cpu,%mem --sort=-%cpu | head -n 5

Per vedere i primi 5 processi che consumano memoria è,

ps -eo pid,comm,%cpu,%mem --sort=-%mem | head -n 5

Dove,

-e : Questo flag viene utilizzato per selezionare tutto il processo

-o : Questo flag viene utilizzato per formattare come definito dall'utente.

pid : Questo argomento usato per mostrare pid

comm: Questo argomento utilizzato per mostrare solo il nome del comando. Per ottenere il comando completo utilizzare args, cmdocommand

%cpu: Questo argomento mostra la percentuale di utilizzo della CPU del processo nel formato "##. #". Qui pcpupuò anche essere usato.

%mem: Questo argomento mostra il rapporto tra la dimensione del set residente del processo e la memoria fisica sulla macchina, espressa in percentuale. Qui pmempuò anche essere usato.

--sort: Specifica l'ordinamento. Dopo che =il -segno viene utilizzato per ordinare il valore più alto in alto, dove l'opzione predefinita +è quella di elencare l'ordine numerico crescente [cioè da 0 a n].


-2

top -bn1 |sed -n '7,12'pfunziona anche come una piccola fodera.
Anche se preferisco usare ps con --sort = X -o X, Y, Z

usando ps puoi estrarre diverse statistiche grep per un processo o un utente e poi totalizzarle o venderle con una pipe per awk.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.