How to check CPU & other resources usage in Ubuntu

Posted on: 2025-Jul-09 18:41 PM 0

System monitoring is a crucial skill for Ubuntu users, whether you're troubleshooting performance issues, optimizing resource usage, or simply keeping an eye on your system's health. Ubuntu provides numerous built-in tools and commands to monitor CPU usage, memory consumption, disk activity, and network statistics. This guide will walk you through the most effective methods to monitor your system resources.

Built-in Command Line Tools

1. top - Real-time Process Monitoring

The top command is one of the most fundamental tools for monitoring system resources in real-time.

top

The top command displays:

  • CPU usage by individual processes
  • Memory usage (RAM and swap)
  • Load average over 1, 5, and 15 minutes
  • Running processes sorted by CPU usage

Key shortcuts while running top:

  • Press 1 to show individual CPU cores
  • Press M to sort by memory usage
  • Press P to sort by CPU usage
  • Press q to quit

2. htop - Enhanced Process Viewer

htop is an improved version of top with a more user-friendly interface. If not installed, you can install it with:

sudo apt install htop

Run htop:

htop

htop offers:

  • Color-coded interface for easy reading
  • Mouse support for navigation
  • Tree view of processes
  • Easy process management (kill, nice, etc.)

. ps - Process Status

The ps command provides a snapshot of currently running processes.

bash
# Show all processes with detailed information
ps aux

# Show processes in tree format
ps auxf

# Show processes for current user
ps -u $USER

4. iostat - I/O Statistics

iostat displays CPU and input/output statistics for devices and partitions.

bash
# Install if not available
sudo apt install sysstat

# Show current I/O statistics
iostat

# Show statistics every 2 seconds
iostat 2

# Show extended statistics
iostat -x

5. vmstat - Virtual Memory Statistics

vmstat reports information about processes, memory, paging, block I/O, and CPU activity.

bash
# Show current statistics
vmstat

# Show statistics every 2 seconds, 5 times
vmstat 2 5

# Show memory statistics in MB
vmstat -S M

Memory Monitoring

free - Memory Usage

The free command displays memory usage information.

bash
# Show memory usage
free

# Show in human-readable format
free -h

# Show in MB
free -m

# Update every 2 seconds
free -s 2

/proc/meminfo - Detailed Memory Information

For detailed memory information, you can examine the /proc/meminfo file:

bash
cat /proc/meminfo

CPU-Specific Monitoring

/proc/cpuinfo - CPU Information

To get detailed information about your CPU:

bash
cat /proc/cpuinfo

/proc/loadavg - Load Average

Check the current load average:

bash
cat /proc/loadavg

lscpu - CPU Architecture Information

Display CPU architecture information:

bash
lscpu

Disk Usage Monitoring

df - Disk Space Usage

Check disk space usage:

bash
# Show disk usage
df

# Show in human-readable format
df -h

# Show specific filesystem type
df -t ext4

du - Directory Usage

Check directory disk usage:

bash
# Show current directory usage
du -sh .

# Show usage of all directories
du -sh /*

# Show top 10 largest directories
du -sh /* | sort -hr | head -10

iotop - I/O Usage by Process

Monitor I/O usage by individual processes:

bash
# Install if not available
sudo apt install iotop

# Run iotop
sudo iotop

Network Monitoring

netstat - Network Statistics

Display network connections and statistics:

bash
# Show all connections
netstat -a

# Show listening ports
netstat -l

# Show with process information
netstat -p

# Show network interface statistics
netstat -i

ss - Socket Statistics

Modern replacement for netstat:

bash
# Show all sockets
ss -a

# Show listening TCP sockets
ss -lt

# Show process information
ss -p

iftop - Network Usage by Connection

Monitor network usage by connection:

bash
# Install if not available
sudo apt install iftop

# Run iftop
sudo iftop

Graphical System Monitors

System Monitor (GNOME)

Ubuntu's default graphical system monitor can be accessed through:

  • Applications → System Monitor
  • Or run: gnome-system-monitor

KSysGuard (KDE)

For KDE users:

bash
sudo apt install ksysguard
ksysguard

Advanced Monitoring with Custom Scripts

CPU Usage Script

Create a simple script to monitor CPU usage:

#!/bin/bash
# Save as cpu_monitor.sh

while true; do
    echo "CPU Usage: $(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1)"
    echo "Memory Usage: $(free | grep Mem | awk '{printf "%.2f%%", $3/$2 * 100.0}')"
    echo "Load Average: $(cat /proc/loadavg | cut -d' ' -f1-3)"
    echo "------------------------"
    sleep 5
done

Make it executable and run:

bash
chmod +x cpu_monitor.sh
./cpu_monitor.sh

Performance Monitoring Best Practices

1. Regular Monitoring

Set up regular monitoring to establish baseline performance metrics for your system.

2. Understanding Load Average

Load average represents the average system load over time. A load of 1.0 means your system is fully utilized but not overloaded.

3. Memory vs Swap Usage

Monitor swap usage carefully. High swap usage indicates insufficient RAM and can severely impact performance.

4. I/O Wait Time

High I/O wait times can indicate disk bottlenecks or failing storage devices.

5. Process Identification

Use tools like pgrep and pkill to quickly find and manage specific processes:

bash
# Find process ID by name
pgrep firefox

# Kill process by name
pkill firefox

Automated Monitoring Solutions

1. Cron Jobs for Logging

Set up automated monitoring with cron:

bash
# Edit crontab
crontab -e

# Add entry to log system stats every 5 minutes
*/5 * * * * iostat >> /var/log/system_stats.log

2. Log Analysis

Monitor system logs for issues:

bash
# Check system logs
journalctl -f

# Check specific service logs
journalctl -u apache2 -f

Troubleshooting Common Issues

High CPU Usage

  1. Identify the process using top or htop
  2. Check if it's a legitimate process or potential malware
  3. Consider process priority adjustment with nice or renice

Memory Leaks

  1. Monitor memory usage over time
  2. Identify processes with growing memory consumption
  3. Restart problematic services if necessary

Disk I/O Issues

  1. Use iotop to identify I/O-intensive processes
  2. Check disk health with smartctl
  3. Consider disk optimization or replacement

Conclusion

Monitoring system resources in Ubuntu is essential for maintaining optimal performance and identifying issues before they become critical. The tools covered in this guide provide comprehensive insights into CPU usage, memory consumption, disk activity, and network statistics. Regular monitoring using these tools will help you maintain a healthy and efficient Ubuntu system.

Start with basic tools like top, free, and df, then gradually incorporate more advanced monitoring solutions as your needs grow. Remember that consistent monitoring is key to understanding your system's normal behavior and quickly identifying anomalies.