33 Command Line Tools to Monitor Linux Performance

Table of Contents

  • 19. Nmon: Monitor Linux Performance
  • 20. Collectl: All-in-One Performance Monitoring Tool
  • 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 processes. The top command is much useful 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

    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

    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    9430+8     196431 /lib/libselinux.so.1
    init          1      root   10u     FIFO       0,17                 953 /dev/initctl

    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 > P 2532133365:2532133481(116) ack 3561562349 win 9648
    22:09:07.653466 IP tecmint.com.ssh > P 116:232(116) ack 1 win 9648
    22:08:59.617916 IP > tecmint.com.ssh: . ack 116 win 64347

    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                     *:*                         LISTE

    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

    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

    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

    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

    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.

    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

    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

    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

    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

    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.

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

    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.

    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.

    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

    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

    21. Glances – Real Time System Monitoring

    Glances is a monitoring tool built to present as much information as possible in any terminal size, it automatically takes the terminal window size it runs on, in other words, it’s a responsive monitoring tool.

    Real Time Linux Monitoring


    1. Licensed under LGPL and written in Python.
    2. Cross-platform, it works on Windows, Mac, BSD and Linux.
    3. Available in most Linux official repositories.
    4. A It gives a lot of information about your system.
    5. Built using curses.

    22. Sarg – Squid Bandwidth Monitoring

    Sarg (Squid Analysis Report Generator) is a free & open-source tool which act as a monitoring tool for your Squid proxy server, it creates reports about your Squid proxy server users, IP addresses, the sites they visit beside some other information.

    Monitor Squid Proxy Logs

    Sarg Monitors Squid Logs

    Features of Sarg
    1. Licensed under GPL 2 and available in many languages.
    2. Works under Linux & FreeBSD.
    3. Generates report in HTML format.
    4. Very easy to install & use.

    23. Apache Status Monitoring

    Apache Module mod_status is an Apache server module that allows you to monitor the workers status of the Apache server. It generates a report in an easy to read HTML format. It shows you the status of all the workers, how much CPU each one using, and what requests are currently handled and number of working and not working workers.

    Apache Monitoring in Linux

    Apache Status Monitoring

    24. Monit – Linux Process and Services Monitoring

    Monit is a nice program that monitors your Linux & Unix server, it can monitor everything you have on your server, from the main server (Apache, Nginx..) to files permissions, files hashes and web services. Plus a lot of things.

    Linux Process Monitoring

    Monit: Linux Process Monitoring

    Features of Monit
    1. Free & open-source, released under AGPL and written in C.
    2. It can be started from the command line interface or via its special web interface.
    3. Very effective in monitoring all the software on your system and services.
    4. A nice web interface with beautiful charts for CPU and RAM usage.
    5. Monit can automatically take actions in emergency situations.
    6. A lot more..

    25. Sysstat – All-in-One System Performance Monitoring

    Another monitoring tool for your Linux system. Sysstat is not a real command in fact, it’s just the name of the project, Sysstat in fact is a package that includes many performance monitoring tools like iostat, sadf, pidstat beside many other tools which shows you many statistics about your Linux OS.

    Sysstat All-in-One Linux Monitoring

    Sysstat: Linux Statistics Monitoring

    Features of Sysstat
    1. Available in many Linux distributions repositories by default.
    2. Ability to create statistics about RAM, CPU, SWAP usage. Beside the ability to monitor Linux kernel activity, NFS server, Sockets, TTY and filesystems.
    3. Ability to monitor input & output statistics for devices, tasks.. etc.
    4. Ability to output reports about network interfaces and devices, with support for IPv6.
    5. Sysstat can show you the power statistics (usage, devices, the fans speed.. etc) as well.
    6. Many other features..

    26. Icinga – Next Generation Server Monitoring

    Unlike the other tools, Icinga is a network monitoring program, it shows you many options and information about your network connections, devices and processes, it’s a very good choice for those who are looking for a good tool to monitor their networking stuffs.

    Icinga Monitoring Tool

    Icinga Monitoring Tool

    Features of Icinga
    1. Icinga is also free and open-source.
    2. Very functional in monitoring everything you may have in networking.
    3. Support for MySQL and PostgreSQL is included.
    4. Real-time monitoring with A nice web interface.
    5. Very expendable with modules and extensions.
    6. Icinga supports applying services and actions to hosts.
    7. A lot more to discover..

    27. Observium – Network Management and Monitoring

    Observium is also a network monitoring tool, it was designed to help you manage your network of servers easily, there are 2 versions from it; Community Edition which is free & open-source and Commercial version which costs £150/year.

    Linux Network Monitoring

    Observium: Linux Network Monitoring

    Features of Observium
    1. Written in PHP with MySQL database support.
    2. Has a nice web interface to output information and data.
    3. Ability to manage and monitor hundreds of hosts worldwide.
    4. The community version from it is licensed under QPL license.
    5. Works on Windows, Linux, FreeBSD and more.

    28. Web VMStat – System Statistics Monitoring

    Web VMStat is a very simple web application programmer, that provides a real time system information usage, from CPU to RAM, Swap and input/output information in html format.

    Web VMStat Tool for Linux

    Web VMStat Tool for Linux

    29. PHP Server Monitoring

    Unlike the other tools on this list, PHP Server Monitoring is a web script written in PHP that helps you to manage you websites and hosts easily, it supports MySQL database and is released under GPL 3 or later.

    PHP Server Monitor

    PHP Server Monitor

    1. A nice web interface.
    2. Ability to send notifications to you via Email & SMS.
    3. Ability to view the most important information about CPU and RAM.
    4. A very modern logging system to log connection errors and emails that are sent.
    5. Support for cronjob services to help you monitor your servers and websites automatically.

    30. Linux Dash – Linux Server Performance Monitoring

    From its name, “Linux Dash” is a web dashboard that shows you the most important information about your Linux systems such as RAM, CPU, file-system, running processes, users, bandwidth usage in real time, it has a nice GUI and it’s free & open-source.

    Linux Dash Tool

    Linux Dash Tool

    31. Cacti – Network and System Monitoring

    Cacti is nothing more than a free & open-source web interface for RRDtool, it is used often to monitor the bandwidth using SNMP (Simple Network Management Protocol), it can be used also to monitor CPU usage.

    Cacti Network Monitoring

    Cacti Network Monitoring

    Features of Cacti
    1. Free & open-source, released under GPL license.
    2. Written in PHP with PL/SQL.
    3. A cross-platform tool, it works on Windows and Linux.
    4. User management; you may create different users accounts for Cacti.

    32. Munin – Network Monitoring

    Munin is also a web interface GUI for RRDtool, it was written in Perl and licensed under GPL, Munin is a good tool to monitor systems, networks, applications and services. It works on all Unix-like operating systems and has a nice plugin system; there are 500 different plugin available to monitor anything you want on your machine. A notifications system is available to send messages to the administrator when there’s an error or when the error is resolved.

    Munin Network Monitoring

    Munin Network Monitoring

    33. Wireshark – Network Protocol Analyzer

    Also, unlike all the other tools on our list, Wireshark is an analyzer desktop program which is used to analyze network packets and to monitor network connections. It’s written in C with the GTK+ library and released under the GPL license.

    Wireshark Network Analyzer

    Wireshark Network Analyzer

    1. Cross-platform: it works on Linux, BSD , Mac OS X and Windows.
    2. Command line support: there’s a command line based version from Wireshark to analyze data.
    3. Ability to capture VoIP calls, USB traffic, network data easily to analyze it.
    4. Available in most Linux distributions repositories.

    source:  http://www.tecmint.com/linux-performance-monitoring-tools/

    Tags: , ,