Usa il seguente comando:
ps aux --sort -rss
Controlla qui per maggiori informazioni sull'utilizzo della memoria dei processi Linux
Un metodo rapido e sporco consiste nel reindirizzare l'output di ps aux
al sort
comando:
$ ps aux | sort -rn -k 5,6
Esempio
$ ps aux | sort -rn -k 5,6
...
root 1584 0.0 0.0 22540 1236 ? S 07:04 0:01 hald-addon-storage: polling /dev/sr0 (every 2 sec)
root 1575 0.0 0.0 22536 872 ? S 07:04 0:00 /usr/libexec/hald-addon-generic-backlight
root 1574 0.0 0.0 22536 880 ? S 07:04 0:00 /usr/libexec/hald-addon-leds
root 1565 0.0 0.0 22536 876 ? S 07:04 0:00 /usr/libexec/hald-addon-rfkill-killswitch
saml 2507 0.0 0.0 22232 500 ? S 07:05 0:00 dbus-launch --sh-syntax --exit-with-session
root 1671 0.0 0.0 22156 936 ? Ss 07:04 0:00 xinetd -stayalive -pidfile /var/run/xinetd.pid
...
Questo non gestisce le intestazioni di colonna che vengono mescolate con l'output, ma è facile da ricordare sulla riga di comando ed è un modo accettabile per fare quello che vuoi quando visualizzi manualmente questo tipo di output.
Esempio
root 1791 0.0 0.0 4140 536 tty2 Ss+ 07:04 0:00 /sbin/mingetty /dev/tty2
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 996 0.0 0.0 0 0 ? S 07:04 0:01 [kdmflush]
root 982 0.0 0.0 0 0 ? S 07:04 0:00 [kvm-irqfd-clean]
Altri suggerimenti
Un suggerimento aggiuntivo sarebbe quello di reindirizzare l'intero output a un altro comando come less
. Ciò ti consente di visualizzare le informazioni una pagina alla volta e di utilizzare anche i tasti freccia e i tasti pagina su/giù per scorrere avanti e indietro l'output.
$ ps aux | sort -rn -k 5,6 | less
Se il tuo output sta avvolgendo molto puoi anche utilizzare il -S
passa a less, che costringerà invece tutto l'output a rimanere su una singola riga. Puoi quindi utilizzare i tasti freccia per spostarti a sinistra/destra/su/giù per vedere tutto.
$ ps aux | sort -rn -k 5,6 | less -S
Ordinamento all'interno di ps
Alcune versioni di ps
fornire la possibilità di utilizzare --sort
. Questo interruttore può quindi accettare chiavi che hanno il prefisso +
o un -
per indicare l'ordinamento...dal minimo al più grande o dal più grande al meno.
Esempi
vsz,-rss
$ ps aux --sort=vsz,-rss | head -5
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 2 0.0 0.0 0 0 ? S 07:03 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 07:03 0:00 [ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S 07:03 0:01 [migration/0]
root 5 0.0 0.0 0 0 ? S 07:03 0:00 [watchdog/0]
+vsz,+rss
$ ps aux --sort=+vsz,+rss | head -5
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 2 0.0 0.0 0 0 ? S 07:03 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 07:03 0:00 [ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S 07:03 0:01 [migration/0]
root 5 0.0 0.0 0 0 ? S 07:03 0:00 [watchdog/0]
-vsz,-rss
$ ps aux --sort=-vsz,-rss | head -5
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1832 0.0 0.0 2088924 3312 ? Sl 07:04 0:00 /usr/sbin/console-kit-daemon --no-daemon
saml 3517 0.2 1.2 2073196 100492 ? Sl 07:06 0:34 /home/saml/.dropbox-dist/dropbox
saml 3516 0.0 0.8 2071032 67388 ? Sl 07:06 0:07 /home/saml/.dropbox-dist/dropbox
saml 2657 0.1 0.7 1580936 57788 ? Sl 07:05 0:27 nautilus
Anche se ps non riflette l'effettiva memoria utilizzata, questo comando è piuttosto utile.
ps -eo size,pid,user,command --sort -size | awk '{ hr=$1/1024 ; printf("%13.2f Mb ",hr) } { for ( x=4 ; x<=NF ; x++ ) { printf("%s ",$x) } print "" }'