Classificando processos por uso de memória

107

Eu posso ver a lista de todos os processos e a memória via

ps aux 

e passando pelo VSZ e pelo RSS

Existe uma maneira de classificar a saída desse comando pela ordem decrescente no valor RSS?

    
por user2817836 26.09.2013 / 16:35

6 respostas

187

Use o seguinte comando:

ps aux --sort -rss

Verifique aqui para mais uso da memória do processo Linux

    
por 26.09.2013 / 17:02
20

Um método rápido e sujo é apenas canalizar a saída de ps aux para o comando sort :

$ ps aux | sort -rn -k 5,6

Exemplo

$ 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
...

Isso não funciona para os cabeçalhos de coluna que são misturados com a saída, mas é fácil de lembrar na linha de comando e é uma maneira aceitável de fazer o que você deseja ao exibir manualmente esse tipo de saída.

Exemplo

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]

Mais dicas

Uma dica adicional seria canalizar toda a saída para outro comando, como less . Isso permite que você olhe para as informações uma página por vez e também use as teclas de seta e as teclas de página para cima / para baixo para rolar para frente e para trás na saída.

$ ps aux | sort -rn -k 5,6 | less

Se a sua saída estiver muito envolvida, você também poderá utilizar a opção -S para menos, o que forçará toda a saída a permanecer em uma única linha. Você pode então usar as teclas de seta para mover para a esquerda / direita / cima / baixo para ver tudo isso.

$ ps aux | sort -rn -k 5,6 | less -S

Classificando dentro de ps

Algumas versões do ps fornecem a capacidade de usar --sort . Essa opção pode usar as chaves que são prefixadas com + ou - para indicar a ordem de classificação ... menos para maior ou maior para menor.

Exemplos

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
    
por 26.09.2013 / 17:00
3

Mesmo que o ps não reflita a memória real usada, este comando é bastante útil.

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 "" }'
    
por 03.08.2017 / 12:03
1

A maneira simples é instalar o htop

em que você pode classificar o processo com base no PID, porcentagem de CPU, MEM

mais sofisticado

    
por 07.08.2017 / 14:55
0

Como uma alternativa aos argumentos do estilo BSD mostrados nas outras respostas, pode-se usar (pelo menos usando o procps, fornecido pelo Debian e pelo Ubuntu):

ps -eF --sort=-rss
    
por 14.10.2016 / 01:27
0
  1. Executar o comando top
  2. Shift + F para classificar com base no campo (veja o menu completo abaixo)
  3. Selecione n para classificar com base no uso de memória

n: %MEM = Memory usage (RES)

    
por 01.03.2018 / 12:51

Tags