Risposte:
Perché usare ps
quando puoi farlo facilmente con il top
comando?
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
top
funziona effettivamente.
top
legge 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, ps
non riconosce --sort
, ma offre -r
di 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 head
pure) 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 ps
sia 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 ps
soluzioni basate.
top -o cpu -n 5
un modo per ottenere la stessa cosa. Qualcuno sa? Il mio top
è diverso dal tuo top
.
-o
e -n
imposta il numero di volte in cui aggiorna il display prima di uscire.
top
non sembra avere una modalità batch, il che è abbastanza limitante. Ci deve essere un modo per eseguire il piping top
in altri comandi. Farò qualche ricerca.
top
funzionato 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 c
alla 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 --sort
e c
specifica 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 ps
ha 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 ps
pagina man.
$ man ps
top
su 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
, cmd
ocommand
%cpu
: Questo argomento mostra la percentuale di utilizzo della CPU del processo nel formato "##. #". Qui pcpu
può 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 pmem
può 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].