In daily development and server management, real-time monitoring of system resource usage is essential. While htop and top are classic system monitoring tools, today we're introducing a more modern alternative — Bottom (btm).
What Is Bottom?
Bottom (invoked as btm on the command line) is a cross-platform, graphical system/process monitor written in Rust. It supports Linux, macOS, and Windows, drawing inspiration from gtop, gotop, and htop, but offering richer features and a more polished interface.
Key Features
- 🦀 Written in Rust - Memory-safe, high-performance, low resource footprint
- 🖥️ Cross-Platform - Full coverage of Linux, macOS, and Windows
- 📊 Visual Charts - Real-time graphs for CPU, memory, and network usage
- 🎨 Highly Customizable - Support for custom layouts, colors, and filters
- ⌨️ Intuitive Shortcuts - Vim-like keyboard operations with a shallow learning curve
- 🔍 Powerful Search - Quickly filter and locate processes
- 📈 Historical Data - View trends in resource usage over time
Installation
Linux
Install via package manager:
# Ubuntu/Debian
sudo apt install bottom
# Fedora/RHEL
sudo dnf install bottom
# Arch Linux
sudo pacman -S bottom
# openSUSE
sudo zypper install bottom
Install via Cargo (recommended for the latest version):
cargo install bottom
Install precompiled binary:
# Download the latest release
wget https://github.com/ClementTsang/bottom/releases/latest/download/bottom_x86_64-unknown-linux-gnu.tar.gz
tar -xzf bottom_x86_64-unknown-linux-gnu.tar.gz
sudo mv btm /usr/local/bin/
macOS
# Via Homebrew
brew install bottom
# Or via MacPorts
sudo port install bottom
Windows
# Via Chocolatey
choco install bottom
# Or via Scoop
scoop install bottom
# Or via winget
winget install ClementTsang.bottom
Getting Started
Basic Usage
After installation, simply run in your terminal:
btm
And you'll see the full system monitoring dashboard.
Common Keyboard Shortcuts
Bottom uses a vim-like keyboard navigation model:
| Shortcut | Description |
|---|---|
? or h |
Open the help menu |
q |
Quit the program |
g |
Jump to the top |
G |
Jump to the bottom |
/ |
Search for a process |
dd |
Kill the selected process |
Tab |
Switch between widgets |
Mouse click |
Select a widget directly |
Command-Line Options
# Set refresh interval (milliseconds)
btm --rate 2000
# Show CPU widget by default
btm --default_widget_type cpu
# Hide average CPU display
btm --hide_avg_cpu
# Use a custom config file
btm --config /path/to/config.toml
# View full help
btm --help
Custom Configuration
Bottom supports deep customization through a configuration file. Config file locations:
# Linux/macOS
~/.config/bottom/bottom.toml
# Windows
%APPDATA%\bottom\bottom.toml
Example Configuration
# Refresh interval (milliseconds)
rate = 2000
# Default widget layout
[[row]]
[[row.widget]]
type = "cpu"
[[row.widget]]
type = "memory"
[[row]]
[[row.widget]]
type = "network"
[[row.widget]]
type = "process"
# Color theme
[colors]
table_header_color = "#00d7ff"
cpu_core_colors = ["#ff5555", "#50fa7b", "#f1fa8c"]
# Process filters
[flags]
hide_kernel_threads = true
show_cpu_cores = true
Bottom vs. htop
| Feature | Bottom (btm) | htop |
|---|---|---|
| Language | Rust | C |
| Cross-platform | ✅ Linux/macOS/Windows | ⚠️ Primarily Linux/Unix |
| Visual charts | ✅ Built-in | ❌ Requires extra setup |
| Historical data | ✅ Supported | ❌ Real-time only |
| Configuration | ✅ TOML config | ⚠️ Limited |
| Resource usage | Low | Low |
| Community momentum | 🔥 Rapidly growing | Stable |
Real-World Use Cases
1. Server Performance Monitoring
Run btm on a remote server to get a clear view of: - CPU core load distribution - Memory usage and swap space - Real-time network interface traffic - Disk I/O read/write speeds
2. Development Environment Debugging
When running resource-intensive applications, use btm to quickly pinpoint: - Which process is consuming the most CPU - Suspected processes with memory leaks - Network connection anomalies
3. System Optimization Analysis
Use historical charts to analyze: - Peak resource usage periods - Long-term resource trends - The effectiveness of optimization efforts
Advanced Tips
Custom Widget Layouts
Bottom lets you fully customize the interface layout, creating a monitoring panel that best fits your workflow:
# Layout focused on CPU and processes
[[row]]
[[row.widget]]
type = "cpu"
ratio = 2
[[row.widget]]
type = "process"
ratio = 3
Process Filtering and Search
Press / to open the search box, which supports regular expressions:
# Search for a specific process
python
# Using a regex pattern
^node.*
# Filter by user
user:kevin
Monitor Specific CPU Cores
# Show only specific CPU cores
btm --cpu_core 0 --cpu_core 1
Summary
Bottom (btm) is a modern system monitoring tool that, thanks to Rust's performance benefits, cross-platform support, rich visualization features, and high customizability, is becoming a strong alternative to htop.
Whether you're a system administrator, a DevOps engineer, or just a developer, btm provides an intuitive and efficient way to monitor your system's resources. Best of all, it's completely open-source and free, with an active community and continuous updates.
Give it a try: Visit the GitHub repository to start your modern system monitoring journey!
References: