메모리 사용량을 기준으로 프로세스 정렬

메모리 사용량을 기준으로 프로세스 정렬

모든 프로세스와 메모리 목록을 볼 수 있습니다.

ps aux 

VSZ 및 RSS를 찾아보세요.

이 명령의 출력을 RSS 값의 내림차순으로 정렬하는 방법이 있습니까?

답변1

다음 명령을 사용하십시오.

ps aux --sort -rss

자세한 내용은 여기를 확인하세요.Linux 프로세스 메모리 사용량

답변2

빠르고 더러운 방법은 출력을 명령 ps aux으로 파이프하는 것입니다.sort

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

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

이는 출력과 혼합된 열 헤더를 처리하지 않지만 명령줄에서 기억하기 쉽고 해당 출력을 수동으로 볼 때 원하는 작업을 수행하는 데 허용되는 방법입니다.

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]

추가 팁

또 다른 방법은 전체 출력을 다른 명령(예: )으로 파이프하는 것입니다 less. 이렇게 하면 한 번에 한 페이지의 정보를 볼 수 있고 화살표 키와 페이지 위로/아래로 키를 사용하여 출력을 앞뒤로 스크롤할 수도 있습니다.

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

출력이 많이 래핑되는 경우 -S스위치를 적게로 사용할 수도 있습니다. 이렇게 하면 모든 출력이 한 줄에 유지됩니다. 그런 다음 화살표 키를 사용하여 왼쪽/오른쪽/위/아래로 이동하여 모든 것을 볼 수 있습니다.

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

ps 내에서 정렬

일부 버전에서는 ps의 사용을 제공합니다 --sort. 그런 다음 이 스위치는 +접두사가 a 또는 a인 키를 사용하여 -가장 작은 것에서 가장 큰 것 또는 가장 큰 것에서 가장 작은 것까지 정렬 순서를 나타낼 수 있습니다.

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

답변3

이 명령은 ps가 사용된 실제 메모리를 반영하지 않는 경우에도 유용합니다.

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 "" }'

답변4

쉬운 방법은 설치하는 것입니다.맨 위

PID, CPU 비율, MEM을 기준으로 프로세스를 정렬할 수 있습니다.

더 복잡한

관련 정보