Did You Know?
Got a tip? Let us know

HostGator Diwali Mega Offer 50% Flat Discount on all Hosting Plans - Grab it Now

20 Command Line Tools to Monitor Linux Performance

Download Your Free eBooks NOW - 10 Free Linux eBooks for Administrators
CW

It’s really very tough job for every System or Network administrator to monitor and debug Linux System Performance problems every day. After being a Linux Administrator for 5 years in IT industry, I came to know that how hard is to monitor and keep systems up and running. For this reason, we’ve compiled the list of Top 20 frequently used command line monitoring tools that might be useful for every Linux/Unix System Administrator. These commands are available under all flavors of Linux and can be useful to monitor and find the actual causes of performance problem. This list of commands shown here are very enough for you to pick the one that is suitable for your monitoring scenario.

Linux Command Line Monitoring

Linux Command Line Monitoring

1. Top – Linux Process Monitoring

Linux Top command is a performance monitoring program which is used frequently by many system administrators to monitor Linux performance and it is available under many Linux/Unix like operating systems. The top command used to dipslay all the running and active real-time processes in ordered list and updates it regularly. It display CPU usage, Memory usage, Swap Memory, Cache Size, Buffer Size, Process PID, User, Commands and much more. It also shows high memory and cpu utilization of a running processess. The top command is much userful for system administrator to monitor and take correct action when required. Let’s see top command in action.

# top
Top Command Example

Top Command Example

For more examples of Top command read : 12 TOP Command Examples in Linux

2. VmStat – Virtual Memory Statistics

Linux VmStat command used to display statistics of virtual memory, kernerl threads, disks, system processes, I/O blocks, interrupts, CPU activity and much more. By default vmstat command is not available under Linux systems you need to install a package called sysstat that includes a vmstat program. The common usage of command format is.

# vmstat

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 810420  97380  70628    0    0   115     4   89   79  1  6 90  3  0

For more Vmstat examples read : 6 Vmstat Command Examples in Linux

3. Lsof – List Open Files

Lsof command used in many Linux/Unix like system that is used to display list of all the open files and the processes. The open files included are disk files, network sockets, pipes, devices and processes. One of the main reason for using this command is when a disk cannot be unmounted and displays the error that files are being used or opened. With this commmand you can easily identify which files are in use. The most common format for this command is.

# lsof

COMMAND     PID      USER   FD      TYPE     DEVICE     SIZE       NODE NAME
init          1      root  cwd       DIR      104,2     4096          2 /
init          1      root  rtd       DIR      104,2     4096          2 /
init          1      root  txt       REG      104,2    38652   17710339 /sbin/init
init          1      root  mem       REG      104,2   129900     196453 /lib/ld-2.5.so
init          1      root  mem       REG      104,2  1693812     196454 /lib/libc-2.5.so
init          1      root  mem       REG      104,2    20668     196479 /lib/libdl-2.5.so
init          1      root  mem       REG      104,2   245376     196419 /lib/libsepol.so.1
init          1      root  mem       REG      104,2    93508     196431 /lib/libselinux.so.1
init          1      root   10u     FIFO       0,17                 953 /dev/initctl

More lsof command usage and examples : 10 lsof Command Examples in Linux

4. Tcpdump – Network Packet Analyzer

Tcpdump one of the most widely used command-line network packet analyzer or packets sniffer program that is used capture or filter TCP/IP packets that received or transferred on a specific interface over a network. It also provides a option to save captured packages in a file for later analysis. tcpdump is almost available in all major Linux distributions.

# tcpdump -i eth0

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
22:08:59.617628 IP tecmint.com.ssh > 115.113.134.3.static-mumbai.vsnl.net.in.28472: P 2532133365:2532133481(116) ack 3561562349 win 9648
22:09:07.653466 IP tecmint.com.ssh > 115.113.134.3.static-mumbai.vsnl.net.in.28472: P 116:232(116) ack 1 win 9648
22:08:59.617916 IP 115.113.134.3.static-mumbai.vsnl.net.in.28472 > tecmint.com.ssh: . ack 116 win 64347

For more tcpdump usage read : 12 Tcpdump Command Examples in Linux

5. Netstat – Network Statistics

Netstat is a command line tool for monitoring incoming and outgoing network packets statistics as well as interface statistics. It is very useful tool for every system administrator to monitor network performance and troubleshoot network related problems.

# netstat -a | more

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 *:mysql                     *:*                         LISTEN
tcp        0      0 *:sunrpc                    *:*                         LISTEN
tcp        0      0 *:realm-rusd                *:*                         LISTEN
tcp        0      0 *:ftp                       *:*                         LISTEN
tcp        0      0 localhost.localdomain:ipp   *:*                         LISTEN
tcp        0      0 localhost.localdomain:smtp  *:*                         LISTEN
tcp        0      0 localhost.localdomain:smtp  localhost.localdomain:42709 TIME_WAIT
tcp        0      0 localhost.localdomain:smtp  localhost.localdomain:42710 TIME_WAIT
tcp        0      0 *:http                      *:*                         LISTEN
tcp        0      0 *:ssh                       *:*                         LISTEN
tcp        0      0 *:https                     *:*                         LISTEN

More Netstat examples : 20 Netstat Command Examples in Linux.

6. Htop – Linux Process Monitoring

Htop is a much advanced interactive and real time Linux process monitoring tool. This is much similar to Linux top command but it has some rich features like user friendly interface to manage process, shortcut keys, vertical and horizontal view of the processes and much more. Htop is a third party tool and doesn’t included in Linux systems, you need to install it using YUM package manager tool. For more information on installation read our article below.

# htop
Htop Command Example

Htop Command Example Screenshot

For Htop installation read : Install Htop (Linux Process Monitoring) in Linux

7. Iotop – Monitor Linux Disk I/O

Iotop is also much similar to top command and Htop program, but it has accounting function to monitor and display real time Disk I/O and processes. This tool is much useful for finding the exact process and high used disk read/writes of the processes.

# iotop
Iotop Command Example

Iotop Command Example Screenshot

For Ioptop installation and usage read : Install Iotop in Linux

8. Iostat – Input/Output Statistics

IoStat is simple tool that will collect and show system input and output storage device statistics. This tool is often used to trace storage device performance issues including devices, local disks, remote disks such as NFS.

# iostat

Linux 2.6.18-238.9.1.el5 (tecmint.com)         09/13/2012

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.60    3.65    1.04    4.29    0.00   88.42

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
cciss/c0d0       17.79       545.80       256.52  855159769  401914750
cciss/c0d0p1      0.00         0.00         0.00       5459       3518
cciss/c0d0p2     16.45       533.97       245.18  836631746  384153384
cciss/c0d0p3      0.63         5.58         3.97    8737650    6215544
cciss/c0d0p4      0.00         0.00         0.00          8          0
cciss/c0d0p5      0.63         3.79         5.03    5936778    7882528
cciss/c0d0p6      0.08         2.46         2.34    3847771    3659776

For more Iostat usage and examples visit : 6 Iostat Command Examples in Linux

9. IPTraf – Real Time IP LAN Monitoring

IPTraf is an open source console-based real time network (IP LAN) monitoring utility for Linux. It collects a variety of information such as IP traffic monitor that passes over the network, including TCP flag information, ICMP details, TCP/UDP traffic breakdowns, TCP connection packet and byne counts. It also gathers information of general and detaled interface statistics of TCP, UDP, IP, ICMP, non-IP, IP checksum errors, interface activity etc.

IP Traffic Monitor

IP Traffic Monitor

For more information and usage of IPTraf tool, please visit : IPTraf Network Monitoring Tool

10. Psacct or Acct – Monitor User Activity

psacct or acct tools are very useful for monitoring each users activity on the system. Both daemons runs in the background and keeps a close watch on the overall activity of each user on the system and also what resources are being consumed by them.

These tools are very useful for system administrators to track each users activity like what they are doing, what commands they issued, how much resources are used by them, how long they are active on the system etc.

For installation and example usage of commands read the article on Monitor User Activity with psacct or acct

11. Monit – Linux Process and Services Monitoring

Monit is a free open source and web based process supervision utility that automatically monitors and managers system processes, programs, files, directories, permissions, checksums and filesystems.

It monitors services like Apache, MySQL, Mail, FTP, ProFTP, Nginx, SSH and so on. The system status can be viewed from the command line or using it own web interface.

Monit Linux Process Monitoring

Monit Linux Process Monitoring

Read More : Linux Process Monitoring with Monit

12. NetHogs – Monitor Per Process Network Bandwidth

NetHogs is an open source nice small program (similar to Linux top command) that keeps a tab on each process network activity on your system. It also keeps a track of real time network traffic bandwidth used by each program or application.

NetHogs Linux Bandwidth Monitoring

NetHogs Linux Bandwidth Monitoring

Read More : Monitor Linux Network Bandwidth Using NetHogs

13. iftop – Network Bandwidth Monitoring

iftop is another terminal-based free open source system monitoring utility that displays a frequently updated list of network bandwidth utilization (source and destination hosts) that passing through the network interface on your system. iftop is considered for network usage, what ‘top‘ does for CPU usage. iftop is a ‘top‘ family tool that monitor a selected interface and displays a current bandwidth usage between two hosts.

iftop - Network Bandwidth Monitoring

iftop – Network Bandwidth Monitoring

Read More : iftop – Monitor Network Bandwidth Utilization

14. Monitorix – System and Network Monitoring

Monitorix is a free lightweight utility that is designed to run and monitor system and network resources as many as possible in Linux/Unix servers. It has a built in HTTP web server that regularly collects system and network information and display them in graphs. It Monitors system load average and usage, memory allocation, disk driver health, system services, network ports, mail statistics (Sendmail, Postfix, Dovecot, etc), MySQL statistics and many more. It designed to monitor overall system performance and helps in detecting failures, bottlenecks, abnormal activities etc.

Monitorix Monitoring

Monitorix Monitoring

Read More : Monitorix a System and Network Monitoring Tool for Linux

15. Arpwatch – Ethernet Activity Monitor

Arpwatch is a kind of program that is designed to monitor Address Resolution (MAC and IP address changes) of Ethernet network traffic on a Linux network. It continuously keeps watch on Ethernet traffic and produces a log of IP and MAC address pair changes along with a timestamps on a network. It also has a feature to send an email alerts to administrator, when a pairing added or changes. It is very useful in detecting ARP spoofing on a network.

Read More : Arpwatch to Monitor Ethernet Activity

16. Suricata – Network Security Monitoring

Suricata is an high performance open source Network Security and Intrusion Detection and Prevention Monitoring System for Linux, FreeBSD and Windows.It was designed and owned by a non-profit foundation OISF (Open Information Security Foundation).

Read More : Suricata – A Network Intrusion Detection and Prevention System

17. VnStat PHP – Monitoring Network Bandwidth

VnStat PHP a web based frontend application for most popular networking tool called “vnstat“. VnStat PHP monitors a network traffic usage in nicely graphical mode. It displays a total IN and OUT network traffic usage in hourly, daily, monthly and full summary report.

Read More : VnStat PHP – Monitoring Network Bandwidth

18. Nagios – Network/Server Monitoring

Nagios is an leading open source powerful monitoring system that enables network/system administrators to identify and resolve server related problems before they affect major business processes. With the Nagios system, administrators can able to monitor remote Linux, Windows, Switches, Routers and Printers on a single window. It shows critical warnings and indicates if something went wrong in your network/server which indirectly helps you to begin remediation processes before they occur.

Read More : Install Nagios Monitoring System to Monitor Remote Linux/Windows Hosts

19. Nmon: Monitor Linux Performance

Nmon (stands for Nigel’s performance Monitor) tool, which is used to monitor all Linux resources such as CPU, Memory, Disk Usage, Network, Top processes, NFS, Kernel and much more. This tool comes in two modes: Online Mode and Capture Mode.

The Online Mode, is used for real-time monitoring and Capture Mode, is used to store the output in CSV format for later processing.

Nmon Monitoring

Nmon Monitoring

Read More: Install Nmon (Performance Monitoring) Tool in Linux

20. Collectl: All-in-One Performance Monitoring Tool

Collectl is a yet another powerful and feature rich command line based utility, that can be used to gather information about Linux system resources such as CPU usage, memory, network, inodes, processes, nfs, tcp, sockets and much more.

Collectl Monitoring

Collectl Monitoring

Read More: Install Collectl (All-in-One Performance Monitoring) Tool in Linux

We would like to know what kind of monitoring programs you use to monitor performance of your Linux servers? If we’ve missed any important tool that you would like us to include in this list, please inform us via comments and please don’t forget to share it.

Ravi Saive

Owner at TecMint.com
Simple Word a Computer Geek and Linux Guru who loves to share tricks and tips on Internet. Most Of My Servers runs on Open Source Platform called Linux.

Linux Services & Free WordPress Setup

Our post is simply ‘DIY’ aka ‘Do It Yourself, still you may find difficulties and want us to help you out. We offer wide range of Linux and Web Hosting Solutions at fair minimum rates. Please submit your orders by Clicking Here.

78 Responses

  1. itoctopus says:

    While “top” is one of the most used Linux tools, it is also one of the most annoying. htop is a better alternative, but rare are those system administrators who are willing to install it especially if their server has a lot of sensitive information.

    Linux is really behind when it comes to performance monitoring, and I don’t see any major advancements in this field 15 years ago.

    • Victor says:

      What’s annoying about top..?

    • Joel says:

      What’s the problem with htop and sensitive data? Is it known vulnerable or ?

      • Craig says:

        It gives near real time information about processes and can kill/examine them. That is sensitive info. A high percentage of software is somewhat vulnerable to cyber attacks(give information from the system that can help in attacks), it’s access that you must prevent other than getting rid of useful software.

        • DocSalvager says:

          “It gives near real time information about processes and can kill/examine them. ”

          Only if you have the appropriate permissions to. Reading it and affecting it are two entirely different things.

    • ovi says:

      How is Linux behind when it comes to performance monitoring? compared to what OS? Linux and most UNIX’es offer the possibility to know at every time what each process is doing, and there are no hidden or ‘background’ processes. A little knowledge of how Linux works would have stopped you from uttering such an idiotic statement.
      I would say Linux is far ahead any other systems when it comes to performance monitoring

  2. Free Linux says:

    Good read, I have Mint 13 installed and some of these tools are not installed by default. ‘top’ is, of course, and is one of my favorites for a good summary of current usage information.

  3. Gilank says:

    +1 Also used dstat command to see live process of send / receive over the ethernet

  4. Jericho says:

    Great stuff. I love jnettop. Its siimilar to IPTraf but superior to it, IMO.

    All the tools are great but nothing compares to getting a baseline on your servers before they freak out so you know what normal is for that specific box.

  5. Nicolargo says:

    Also have a look on Glances, a new system monitoring tool with CPU, MEM, LOAD, Network, IO disk, Filesystem and processes stats.

    Will be included in the next Debian release.

  6. Rahul Ghose says:

    Very informative indeed! I was familiar with most items here. Netstat is undoubtedly one of the most used for network monitoring. Well monit came as a surprise really.

  7. Naveen says:

    Thanks………!

  8. DocJ says:

    No mention of sar? In my opinion, sar is one of the most versatile tools for system performance monitoring. Not only can you see stats in realtime, but historical data is saved as well. This can provide valuable insight into what is normal (a baseline, if you will) for system performance as it relates to I/O, memory use, and CPU use, amongst other things. While the rest of these are good tools, I’m surprised there is absolutely no mention of sar.

  9. Mariano says:

    Thank you!

  10. Jon says:

    I like rainbarf too.

  11. dclsv says:

    While all of these tools are nice, I find the approach of logging into each machine you manage to get this info to be laborious.

    If you can run the command locally, you should be able to create a plugin for Nagios (or whatever you’re using ) to present the data as part of the larger picture.

    • kevin says:

      You could use SeaLion to do the work for you. Install the agent on all those systems once(and just one command too!! ) and you are good to go. Most of the default command would serve would be sufficient, but you still get to add any extra commands you want to run on all those servers. No need to ssh into all machines everytime.

      Nagios although not particularly painful to use, using SeaLion makes you wonder just how easy it can get.

    • Alok says:

      Well Said I am using it

  12. Xenon says:

    WTF ! You have used PuTTY to introduce audience to Linux terminal !? Why did you do this to us ? And It’s not at all a full list. I recommend using “free” instead “vmstat” because it’s more simple. Just check this out:
    xenon@xenon-dev:~$ free -h
    total used free shared buffers cached
    Mem: 7,5G 4,3G 3,2G 0B 346M 2,5G
    -/+ buffers/cache: 1,5G 6,0G
    Swap: 1,9G 0B 1,9G

  13. id_rsa says:

    Let me add to “top” family iftop tool. It monitors specified network interface in a real time. And there is ss tool, that is doing almost the same job as netstat does, but it is simpler. Finally, there is tool named watch, which executes a program periodically, showing output fullscreen. This tool doesn’t do monitoring itself, but can run other tools, e.g. watch df -h for diskspace monitoring.

  14. Joe says:

    iftop is missing!!!

  15. Pawan says:

    Very informative post. I never new there were so many commands for same work.

  16. Edueloco says:

    I found nmon quite useful.

  17. Alen says:

    Quite useful collection.

  18. Joe says:

    Can ss get some love?

  19. Great list. If you are an Apache httpd user, I would also recommend apache-top:

    http://www.fr3nd.net/projects/apache-top/

  20. RoseHosting says:

    hi,

    thanks for sharing such a great post. I wanted to add ‘atop’ to the list as it is very nice tool. really you should check it if you haven’t already.

    http://linux.die.net/man/1/atop

  21. Manikandan says:

    Hi Friend,

    blog was very use. one more doubt can you help me

    Thanks & Regards
    Manikandan.K

  22. joe satch says:

    hi thx for sharing.

    80 % of those tools i have use also …. great info

    rs

  23. Ganesh says:

    uptime and prstat commands are missing here.

  24. NgocPT says:

    I think dstat is one of best command for monitoring linux system?? I always use iostat and dstat, may be dstat is missing here

  25. Yizhar says:

    One of the best post in this subject weel done Ravi :)

    I used for quit long some of this: htop, iptraf, nmon (should added as some of the guys
    said) and other genral cmd like: netstat, vmstat, sar, dig, traceroute (should added, default in Red Hat & SuSE).

    Today I added to my arsenal he above: iotop, dstat, nethogs, iftop, monit.

    Suggesting some other free stuff (some are built-in in distrebutions like: Ubuntu/mint, Fedora, SuSE and other but not in Red Hat 5 and below for example):

    mtr – Monitor network TRaffice.

    iperf – Ip Performance – …a beat old school :)

    vnstat – Another network monitor monitor + logging.

    lshw – LiSt HardWare.

    figlet – banner.

    tree – a hierarchy look on file system.

  26. Marek says:

    Idon’t see between them sar statistics or Ksar tool.

  27. Realbanda says:

    This is an amazing review… Thanks for sharing
    Keep posting new things..

  28. Lion says:

    Is there any tools to monitor the loading of GPU?

  29. rigel says:

    Include NMON, this is very useful

  30. Karl Crampton says:

    I think a very useful command is ‘w’ this shows who is logged on and what they are doing. you can also use ‘watch w’ to view this information in real time.

  31. DocJ says:

    I don’t understand why more of these performance monitoring posts don’t mention sar or ksar. When you talk about performance monitoring, these are two of the most useful tools out there. Top and all of its variants are nice for performance monitoring at the time you use them, but they don’t publish to a log (unless you whack together a script).

    Sar can be used with the -o flag to drop its data into an output file (which defaults to /var/log/sa/sa`date +%d` and /var/log/sa/sar`date +%d`). Then you can use a multitude of flags against these files to check statistics for just about every conceivable relevant server statistic.

    The man page is available here:
    http://linux.die.net/man/1/sar

    Very useful tool, and I don’t think it gets enough publicity.

    • DocSalvager says:

      I expect some of these tools are using sar underneath. I’ve found it to be the least resource-intensive way to monitor.

      Whereas most of these tools give you the real-time picture, sar can be called every few seconds with little measurable CPU use to store data historically. Then graph that in near-real-time to see trends like rising CPU usage and falling free memory.

      Well done article Ravi.

  32. Bhupathi says:

    Nice collection of commands. Explained with Screenshot was a good representation style. Thanks for that.

  33. Rajesh A Chivate says:

    Very nice, thanks

  34. Rahul says:

    hi Ravi,

    Liked you article “17 Command Line Tools to Monitor Linux Performance”

    it is very helpful

    Thanks
    Rahul

  35. Tamilselvi says:

    Hi ,

    Please suggest me the list of tools to monitor the performance of the Linux Sever. Open source will be prefered.

    Awaiting for the reply..
    Thanks in advance.

  36. daniel n says:

    You say “Open Source Platform called Linux” whereas you are referring to GNU/Linux. Linux being just a the kernel, GNU/Linux being an Operating System (which is not a platform). A platform is comprised of an Operating System on top of a hardware architecture.

    Quite a noticeable mistake for a Linux guru.

  37. sam says:

    awesome thanks!

  38. ranganth says:

    useful information.. keep it up

  39. Joy Banerjee says:

    Thanks – these commands will help me alot

  40. Shubhansh says:

    There is new cloud-based service SeaLion (https://sealion.com) which executes many of these commands by default and others can be added/modified to see output of commands on beautiful web-interface.

  41. raghav says:

    temperature monitoring?

  42. raghav says:

    Good list . thanks.

    can you also include how we can monitor cpu, gpu, hdd temperature?

  43. Mario says:

    how would you determine the amount of physical and virtual memory on a Linux system, and it’s current usage, in one command?
    thank you

  44. Mark Smith says:

    Not a command line tool but if you are looking for a monitoring tool for your Linux environment, check out the eG Linux monitoring tool from EG innovations

    http://www.eginnovations.com/web/linux-server-monitoring.htm

  45. Sanjay says:

    A Good handy list for a novice Linux administrator to look for monitoring his system effectively. Thank you

  46. Jeff Moncrieff says:

    Glance should have been up near the top. As it Monitors everything like disk space network traffic,Memory, Processes,Temperature(CPU,Disks)

    Jeff

  47. nicolas says:

    Thank you Ravi, i had hard time searching the internet for powerful monitoring tools that would help me to protect my server from spam bots, hackers and harvesters….

  48. Thankzzz.

    lots of helpful for me. awesome

    thanks.

  49. raphael says:

    Those tools are generally ok for monitoring/checking one server but when it comes to monitoring a bunch of them or a complete datacentre, better move to integrated tools like Zabbix (http://www.zabbix.com/) which is amazingly complete and flexible to monitor, catch and alert on any type of hardware, software/service status. And it is open source of course.

  50. Cyring says:

    A new visual tool designed for Intel Core at
    code.google.com/p/xfreq

    Still an active development software, it monitors each CPU at the assembly level using performance counters.
    You will get C-states, Frequencies, Temps ans other features provided by i7 & duo like processors.

    Last version adds kernel task scheduling in RT among logical CPU

  51. M. Adel says:

    BWTop – CLI tool to monitor network interfaces bandwidth rate:
    http://adelmahmoud.wordpress.com/2014/06/24/bwtop/

  52. Wellington Torrejais da Silva says:

    Thanks!!

  53. The fact is, it’s not hard to monitor and debug Linux System Performance problems if you invest in a monitoring solution like NetCrunch 8 (http://www.adremsoft.com), or any of the other paid options out there. In the end the question comes down to whether the cost of the software exceeds the value of your time that you put into using more time-consuming options.

  54. Corneliu says:

    Another nice and small utility for a quick overview is “saidar”.

Leave a Reply

This work is licensed under a (cc) BY-NC | TecMint uses cookies. By using our services, you comply to use of our cookies. More info: Privacy Policy.
© 2012-2014 All Rights Reserved.