Linux top Command Tutorial for Beginners (8 Examples)

While working on the Linux command line, there may be times when you'd want to check process related details, like which process is consuming CPU or memory the most? Well, there exists a command - dubbed top - that lets you do this easily. In this tutorial, we will discuss this tool using some easy to understand examples.

But before we do that, it's worth mentioning that all examples mentioned in this article have been tested on an Ubuntu 16.04 LTS machine.

Linux top command

The top command displays a list of processes or threads currently being managed by the Linux kernel, along with useful information related to them. Following is the tool's syntax:

top [options]

And here's what the tool's man page says about it:

       The  top  program  provides  a dynamic real-time view of a running
       system.  It can display system summary information as  well  as  a
       list  of processes or threads currently being managed by the Linux
       kernel.  The types of system summary  information  shown  and  the
       types,  order  and size of information displayed for processes are
       all user configurable and that configuration can be  made  persis?
       tent across restarts.

       The  program  provides a limited interactive interface for process
       manipulation as well as a much more extensive interface  for  per?
       sonal  configuration   --  encompassing every aspect of its opera?
       tion.

Following are some Q&A-styled examples that should give you a good idea on how the top command works.

Q1. How to use top?

Simple, just execute the 'top' command sans any option:

top

Here's the output it produced on my system:

How to use top command

Note that what you see in the screenshot is just a snapshot of the real-time output (which changes after a fixed interval) that was produced.

Q2. How to understand top command output?

Let's start with the first line. It contains entries for (in that order), current time, duration since the system is up and running, active user sessions, and average load on the system (for last one minute, five minutes, and fifteen minutes, respectively).

The second line contains information (in that order) about total number processes, number of running processes, number of sleeping processes, number of processes that have stopped, and number of processes in the zombie state.

The third line contains CPU-usage information. Following are the details:

           us, user    : time running un-niced user processes
           sy, system  : time running kernel processes
           ni, nice    : time running niced user processes
           id, idle    : time spent in the kernel idle handler
           wa, IO-wait : time waiting for I/O completion
           hi : time spent servicing hardware interrupts
           si : time spent servicing software interrupts
           st : time stolen from this vm by the hypervisor

The next two lines show information related to RAM and swap memory usage. And finally, comes processes related information, which consists of (in that order) process ID, user who owns the process, priority of the process, nice value of the process, virtual, physical, and shared memory used by the process, process status (Sleeping, Running, or Zombie), CPU and RAM usage, time of activity, and command that initiated the process.

Q3. How to kill a process from within top output?

This is pretty simple - just press 'k' and top will ask you for the PID of the process you want to kill. You'll see a message similar to the following appearing just above the line containing process column headers:

PID to signal/kill [default pid = 3397]

How to kill a process from within top output

So you see, you can either enter the process ID or by default, top will try killing (by sending SIGTERM) the first process in the list. Once the signal is sent, a message similar to the following is produced.

Send pid 3007 signal [15/sigterm]

Q4. How to change priority of a process?

Like 'k' is for killing, you can press 'r' in case you want to change the priority of a process (or you want to renice it). Pressing 'r' produces a message similar to the following:

PID to renice [default pid = 3397] 

So either enter a PID or top will try renicing the priority of the first process in list by default. For example, I passed a PID, and then top asked me for the new nice value.

Renice PID 2665 to value

Just provide a value, and press enter, and you'll see the nice value for the process in question will get changed.

Q5. How to change refresh rate of top command?

By default, top refreshes the output after every 3 seconds, but you can tweak this by pressing 'd'. The command will ask you to enter the new delay value:

Change delay from 3.0 to 

Just enter the value, and press enter. That's it.

Q6. How to limit top command output to a user?

By default, top command displays all processes. However, you can limit the output to a particular user by pressing 'u'.

Which user (blank for all)

Just enter the user name in the line above, and press enter, and you'll see the output will contain only those processes that are owned by the user whose name you entered.

For example, I entered 'root', and here's the output:

How to limit top command output to a user

Q7. How to make top display complete command along with arguments?

This can be done by pressing 'c'.  Here's an example:

How to make top display complete command along with arguments

So you can see complete command path as well as command line arguments in the output now.

Q8. How to get help with interactive top commands?

To get help related to interactive top commands, press 'h'. In the output you'll see available commands, and what they do. For example, here's what popped up on my system when I pressed 'h'.

How to get help with interactive top commands

Conclusion

We've just scratched the surface here. The top command provides a lot more features. Once you have understood what all we've discussed in this article, and are done practicing it, head to the top's man page to learn more about it.

Himanshu Arora

About Himanshu Arora

Himanshu Arora has been working on Linux since 2007. He carries professional experience in system level programming, networking protocols, and command line. In addition to HowtoForge, Himanshu's work has also been featured in some of world's other leading publications including Computerworld, IBM DeveloperWorks, and Linux Journal.

Share this page:

Suggested articles

0 Comment(s)

Add comment