Console logo</img>

Introduction

If you are running out of RAM on your Linux system, you will want to find the culprit in order to solve the problem, either by reconfiguring the RAM-hungry application or by stopping it.

We’ll use ps, awk, head and sort with a pipe, to find out which application is consuming our RAM

List running processes ordered by RAM usage

ps aux | awk '{print $2, $4, $11}' | sort -k2rn | head -n 20

You will get something like this:

PID %MEM COMMAND
3349 9.3 /usr/bin/X
3815 6.0 /usr/lib/iceweasel/firefox-bin
3750 1.0 gnome-panel
3753 0.9 nautilus
2751 0.8 /usr/sbin/mysqld
2969 0.8 /usr/bin/polipo
6129 0.7 gnome-terminal
3804 0.6 /usr/lib/gnome-applets/mixer_applet2
3772 0.6 update-notifier
3727 0.6 gnome-settings-daemon
3771 0.5 gnome-power-manager
3117 0.4 /usr/sbin/asterisk
3765 0.4 bluetooth-applet
3433 0.3 /usr/sbin/apache2
4218 0.3 /usr/lib/notification-daemon/notification-daemon
3749 0.3 /usr/bin/openbox
3604 0.3 gnome-session
3128 0.2 /usr/sbin/hald
3721 0.2 /usr/lib/libgconf2-4/gconfd-2

This will list the first 20 applications in reverse order, from the one using more RAM to the one using lest RAM.

Another way is to use htop, and sort by RAM usage.

Update 12/08/10:Thanks to Raphael, you may fire htop or regular top and then hit M (in uppercase) you will have the processes sorted by RAM usage