Risposte:
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"
ps aux | sort -nrk 3,3 | head -n 5
topfunziona effettivamente.
toplegge l'elenco dei processi e visualizza il risultato da solo senza eseguire il piping a nessun altro processo
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
bash(x2 o headpure) ps...
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.
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)
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.
top -o cpu -n 5un modo per ottenere la stessa cosa. Qualcuno sa? Il mio topè diverso dal tuo top.
-oe -nimposta il numero di volte in cui aggiorna il display prima di uscire.
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.
topfunzionato come descritto questo pomeriggio. Saluti.
Un liner più veloce che ho trovato per questo (nota 6 perché si aggiunge l'intestazione):
ps aux k-pcpu | head -6
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
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.
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
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
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].