System Administration

Essential System Utilities: bottom – graphical process/system monitor for the terminal

Last Updated on May 2, 2023

In Operation

Start bottom with the btm command.

Image of bottom in action

We’ve shoehorned our terminal to match the width available on our template so things look a mite squashed and some of the information is not displayed.

Let’s go through the widgets. At the top is the CPU widget showing the CPU usage across all the cores. The time range can be adjusted with a range of 30s to 600s. The box adjacent tells you we’re testing bottom on a machine with 6 cores. We can monitor individual cores by moving up and down the CPU list, or the average CPU usage.

Below the CPU widget is the Memory widget showing a visual representation of RAM. It also shows swap usage but this test system has no swap partition or file configured (32GB of RAM with no swap is  sufficient for our testing purposes). Again the time range can be adjusted with a range of 30s to 600s. Adjacent are widgets reporting system temperatures and disks. The latter has more information than shown in the image above. There are columns for mount point, % used space, free space, total, amount of space, read per second, and write per second.

You’ll see that our test system is plagued by snaps being mounted and listed as block devices. The test system has an alias for df $ alias df='df -h -x squashfs -x tmpfs' which removes all that noise when using df.

The bottom widgets show network activity and a process list. The process list displays for each progress its CPU usage, memory usage, reads per second, writes per second, total read, total write, the user of the process and its state.

There is also a battery widget available which provides information about the batteries on the system: charge percent, consumption, time to empty/charge and the battery health percent. The widget supports devices with more than 1 battery.

There are lots of nice touches present. For example, pressing the e key (or starting bottom with the -e flag) expands the current widget so that it occupies the entire space. There is a basic mode ($ btm -b) which dispenses with the graphs which is useful if you prefer monitoring in a small window.

You’ll want to learn the keyboard shortcuts. Press ? to bring them up. There are general keybindings as well as specific keybindings for each widget. Below we’ve reproduced the bindings for the process widget:

dd, F9           Kill the selected process
c                Sort by CPU usage, press again to reverse
m                Sort by memory usage, press again to reverse
p                Sort by PID name, press again to reverse
n                Sort by process name, press again to reverse
Tab              Group/ungroup processes with the same name
Ctrl-F, /        Open process search widget
P                Toggle between showing the full command or just the process name
s, F6            Open process sort widget
I                Invert current sort
%                Toggle between values and percentages for memory usage
t, F5            Toggle tree mode
+, -, click      Collapse/expand a branch while in tree mode
click on header  Sorts the entries by that column, click again to invert the sort

Next page: Page 3 – Summary

Pages in this article:
Page 1 – Introduction / Installation
Page 2 – In Operation
Page 3 – Summary

Complete list of articles in this series:

Essential System Tools
AlacrittyInnovative, hardware-accelerated terminal emulator
BleachBitSystem cleaning software. Quick and easy way to service your computer
bottomGraphical process/system monitor for the terminal
btop++Monitor usage and stats for CPU, memory, disks, network and processes
catfishVersatile file searching software
ClonezillaPartition and disk cloning software
CPU-XSystem profiler with both a GUI and text-based
CzkawkaFind duplicate files, big files, empty files, similar images, and much more
ddrescueData recovery tool, retrieving data from failing drives as safely as possible
dustMore intuitive version of du written in Rust
f3Detect and fix counterfeit flash storage
Fail2banBan hosts that cause multiple authentication errors
fdupesFind or delete duplicate files
FirejailRestrict the running environment of untrusted applications
GlancesCross-platform system monitoring tool written in Python
GPartedResize, copy, and move partitions without data
GreenWithEnvyNVIDIA graphics card utility
gtopSystem monitoring dashboard
gWakeOnLANTurn machines on through Wake On LAN
hyperfineCommand-line benchmarking tool
HyFetchSystem information tool written in Python
inxiCommand-line system information tool that's a time-saver for everyone
journalctlQuery and display messages from the journal
kmonManage Linux kernel modules with this text-based tool
KrusaderAdvanced, twin-panel (commander-style) file manager
NmapNetwork security tool that builds a "map" of the network
nmonSystems administrator, tuner, and benchmark tool
nnnPortable terminal file manager that's amazingly frugal
petSimple command-line snippet manager
PingnooGraphical representation for traceroute and ping output
ps_memAccurate reporting of software's memory consumption
SMCMulti-featured system monitor written in Python
TimeshiftReliable system restore tool
QDirStatQt-based directory statistics
QJournalctlGraphical User Interface for systemd’s journalctl
TLPMust-have tool for anyone running Linux on a notebook
UnisonConsole and graphical file synchronization software
VeraCryptStrong disk encryption software
VentoyCreate bootable USB drive for ISO, WIM, IMG, VHD(x), EFI files
WTFPersonal information dashboard for your terminal
Notify of

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Inline Feedbacks
View all comments