SMOLNET PORTAL home about changes
Whether you are a Linux sysadmin  or power user, you might suspect a
process of leaking memory, or be  curious about just how much memory
your biggest  running processes are  using.  Most people  know about
the 'top'  command, which gives  a continuously updating  display of
all system  processes, along with  memory, swap and load  usage. But
sometimes you want to be able  to see targeted process data, without
a cluttered display.  Here is a  quick way to display process memory
usage, sorted and limited to the top ten, using the 'ps' command:

```
ps ax -o rss,command | sort -nr | head -n 10
```

Here is what the output looks like:

```
serenity:~# ps ax -o rss,command | sort -nr | head -n 10
35936 spamd child
24556 SCREEN -dRRaAU
16340 emacs -nw
13568 /usr/sbin/apache2 -k start
13208 /usr/sbin/apache2 -k start
13176 /usr/sbin/apache2 -k start
13112 /usr/sbin/apache2 -k start
13108 /usr/sbin/apache2 -k start
13076 /usr/sbin/apache2 -k start
13016 /usr/sbin/apache2 -k start
serenity:~#
```

This will show just the command  name and resident set size (rss) in
KB of  a subset of  system processes. The  resident set size  is the
non-swapped  physical memory  used by  each process,  minus a  small
amount of  overhead. So  it will  give you a  decent idea  of actual
memory  usage. The  'sort -nr'  sorts the  ps output  numerically in
reverse order  (so the biggest memory  hogs are at the  top), and we
limit the  display to  just the  top ten. If  you are  maintaining a
multi-user  system,  you can  add  the  process  owner data  to  the
display:

```
ps ax -o rss,user,command | sort -nr | head -n 10
```

Which now looks like this:

```
serenity:~# ps ax -o rss,user,command | sort -nr | head -n 10
35936 root     spamd child
24556 thinknix SCREEN -dRRaAU
16340 thinknix emacs -nw
13568 www-data /usr/sbin/apache2 -k start
13208 www-data /usr/sbin/apache2 -k start
13176 www-data /usr/sbin/apache2 -k start
13112 www-data /usr/sbin/apache2 -k start
13108 www-data /usr/sbin/apache2 -k start
13076 root     /usr/sbin/apache2 -k start
13016 www-data /usr/sbin/apache2 -k start
serenity:~#
```

To get  a constantly updating  display, use the 'watch'  command and
specify how often you would like it to update, in this case every 10
seconds:

```
watch -n 10 'ps ax -o rss,user,command | sort -nr | head -n 10'
```

This will  clear your terminal and  add a header line  with the time
interval, command name and a timestamp.  Note that this works on any
flavor of GNU/Linux as well as the various BSDs.

```
Every 10.0s: ps ax -o rss,user,command | sort -nr | head -n 10
35936 root     spamd child
24556 thinknix SCREEN -dRRaAU
16340 thinknix emacs -nw
13568 www-data /usr/sbin/apache2 -k start
13208 www-data /usr/sbin/apache2 -k start
13176 www-data /usr/sbin/apache2 -k start
13112 www-data /usr/sbin/apache2 -k start
13108 www-data /usr/sbin/apache2 -k start
13076 root     /usr/sbin/apache2 -k start
13016 www-data /usr/sbin/apache2 -k start
```
Response: text/plain
Original URLgopher://gopher.unixlore.net/0/articles/monitoring-proces...
Content-Typetext/plain; charset=utf-8