Monitoring Linux Server Performance: Top, du, and netstat Explained

linux grub 1

When managing a Linux server, monitoring system resources such as CPU usage, memory consumption, disk space, and network activity is crucial for optimal performance and security. Three essential Linux commands that help server administrators track these resources are top, du, and netstat. These commands provide real-time information on how the system is performing, and they are invaluable for troubleshooting and performance tuning.

In this comprehensive guide, we will explore these three key commands in detail, providing both basic and advanced usage examples. By the end of this tutorial, you will understand how to effectively monitor your server’s resources on Ubuntu 20.04, although the concepts can be applied to any Linux distribution.

Table of Contents:

  1. Prerequisites
  2. Updating the System
  3. Using the top Command: Process Management and Performance Monitoring
  4. Using the du Command: Disk Usage Analysis
  5. Using the netstat Command: Network Connections and Statistics
  6. Conclusion

1. Prerequisites

Before diving into the command usage, ensure that you have the following prerequisites:

  • Server: A server running Ubuntu 20.04 (the commands also work on other Linux distributions).
  • User Permissions: You need either root access or sudo privileges to execute certain commands.

For simplicity, we will assume you have a fresh Ubuntu 20.04 server setup for this guide. If you’re using a different version or Linux distribution, the process remains largely the same.

2. Updating the System

When you first install Ubuntu, it is always a good idea to ensure that your system is up-to-date. To do this, run the following commands:

sudo apt update -y && sudo apt upgrade -y

These commands will update your package index and upgrade the installed packages to the latest versions. After updating, you’re ready to start exploring the resource-monitoring commands.

3. Using the top Command: Process Management and Performance Monitoring

The top command is one of the most commonly used tools for monitoring system performance in real-time. It shows the processes running on the server and provides detailed statistics on CPU usage, memory usage, load averages, and more.

Basic Usage

To run top, simply open your terminal and type:

top

You will see a continuously updated list of processes with various statistics, including CPU usage, memory usage, load average, and process IDs. Here’s an example output:

top - 11:24:59 up 7 days, 11:27,  2 users,  load average: 0.00, 0.00, 0.00
Tasks: 109 total,   1 running, 108 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.1 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.2 si,  0.0 st
MiB Mem :   3931.4 total,   2473.6 free,    139.8 used,   1318.0 buff/cache
MiB Swap:   1024.0 total,   1024.0 free,      0.0 used.   3475.6 avail Mem

Explanation of Output

  • Load Average: Shows the system load for the past 1, 5, and 15 minutes.
  • CPU Usage: Displays the CPU time percentage for user processes, system processes, idle time, etc.
  • Memory Usage: Shows the total, free, and used memory, including buffer and cache memory.
  • Swap Usage: Indicates swap space usage.

Advanced Usage

The top command has several options that can be used to refine the output and focus on specific aspects of system performance.

  • -i: Ignore idle processes (only show active processes).
  • -n [number]: Repeat the command for a specified number of updates.
  • -H: Display threads of processes, rather than just the processes themselves.

For example, to run top and update the display five times before exiting, you would use:

top -n 5

4. Using the du Command: Disk Usage Analysis

The du (disk usage) command is used to check the amount of disk space used by files and directories. It’s especially useful for identifying which directories and files are consuming the most disk space.

Basic Usage

To see the disk usage of all files and directories in the root (/) directory, use:

du -sh /*

The -s flag summarizes the total usage of each directory, and the -h flag provides human-readable output (e.g., KB, MB, GB). The output might look something like this:

7       bin
301M    boot
12K     dev
3.0M    etc
2.4G    usr
710M    var

Advanced Usage

The du command also supports a variety of options that allow you to analyze disk usage more effectively:

  • -d [depth]: Limits the depth of the directory tree displayed.
  • –max-depth=1: Only shows the total usage of directories at the specified level.

For instance, to check disk usage in the /var directory and its immediate subdirectories, use:

du -d 1 /var

This will list the sizes of the directories under /var without displaying their contents recursively.

5. Using the netstat Command: Network Connections and Statistics

The netstat command is used to display network connections, routing tables, and other network-related information. It’s crucial for monitoring active network connections and diagnosing networking issues.

Basic Usage

To see active network connections and the associated status, simply type:

netstat

You’ll see a list of connections and listening ports, along with information about the protocol (TCP/UDP), local and foreign addresses, and the state of the connection.

Example output:

Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0    240 24625403.test:7022      ctel-78-157-7-19.:55913  ESTABLISHED

Advanced Usage

netstat offers a variety of options to filter and refine the output:

  • -t: Show only TCP connections.
  • -u: Show only UDP connections.
  • -n: Show numerical addresses (instead of resolving hostnames).
  • -l: Display only listening sockets (ports waiting for connections).
  • -p: Show the process ID (PID) that owns each connection.

For example, to list all TCP and UDP connections, including listening ports and process information, use:

netstat -tunlp

This command will show active connections and the associated process IDs, which is useful for diagnosing which applications are using which ports.

Conclusion

In this guide, we explored three essential Linux commands for monitoring server resources: top, du, and netstat. Each command serves a unique purpose—top for process and performance monitoring, du for disk usage analysis, and netstat for network connections and statistics.

By mastering these commands, you can ensure your server is running smoothly, optimize resource usage, and quickly diagnose performance or network issues. Additionally, we covered both basic and advanced usages of these commands, helping you get the most out of each tool.

Whether you’re managing a web server, a database server, or any other type of system, these commands will provide you with the insights needed to maintain optimal performance.

Previous Article

Recover Your Keystore Password from a Stash File Using Perl

Next Article

How to Assign a Static IP Address Using Netplan

Subscribe to our Newsletter! 📬

Subscribe to our email newsletter to get the latest posts delivered right to your email.
Pure inspiration, zero spam ✨