{"id":4298,"date":"2026-09-12T15:41:23","date_gmt":"2026-09-12T10:11:23","guid":{"rendered":"https:\/\/cpanelfree.com\/blog\/terminal-monitoring-tools-htop-btop-glances-iotop-vmstat\/"},"modified":"2026-09-12T15:42:01","modified_gmt":"2026-09-12T10:12:01","slug":"terminal-monitoring-tools-htop-btop-glances-iotop-vmstat","status":"publish","type":"post","link":"https:\/\/cpanelfree.com\/blog\/terminal-monitoring-tools-htop-btop-glances-iotop-vmstat\/","title":{"rendered":"Top 5 Terminal Monitoring Tools: htop, btop, glances, iotop &amp; vmstat Compared"},"content":{"rendered":"<div style=\"background-color: #0f172a;border-left: 4px solid #10b981;padding: 18px 22px;margin-bottom: 25px;border-radius: 6px\">\n  <strong style=\"color: #10b981;font-size: 16px\">Quick Technical Answer:<\/strong><\/p>\n<p style=\"color: #cbd5e1;margin: 8px 0 0 0;font-size: 15px;line-height: 1.6\">\n    For daily interactive process management, <strong>htop<\/strong> is the essential baseline. For modern visual aesthetics with GPU, disk, and network graphs, use <strong>btop<\/strong> (<code>sudo apt install btop<\/code>). If you need per-process disk read\/write bandwidth diagnosis, use <strong>iotop<\/strong>. To export metrics over a web interface or REST API, install <strong>glances<\/strong>. For lightweight zero-overhead kernel virtual memory analysis, run the built-in <strong>vmstat 1<\/strong>.\n  <\/p>\n<\/div>\n<h2>Why the Legacy top Command Is No Longer Enough<\/h2>\n<p>Every Linux distribution ships with the standard <code>top<\/code> utility. While functional, <code>top<\/code> lacks horizontal scrolling for long process arguments, provides no visual representation of per-core CPU load, cannot filter disk I\/O per PID, and requires cryptic single-key shortcuts to kill runaway tasks.<\/p>\n<p>When troubleshooting performance degradation on a production cloud VPS\u2014such as high load averages, runaway PHP-FPM workers, rogue database queries, or disk I\/O bottlenecks\u2014having the right terminal telemetry HUD allows you to pinpoint the root cause within seconds rather than digging through raw text logs.<\/p>\n<h2>Tool 1: htop \u2013 The Gold-Standard Interactive Process Viewer<\/h2>\n<p>Written in C and relying on <code>ncurses<\/code>, <strong>htop<\/strong> is the universal replacement for top. It features full mouse support, color-coded per-CPU core meters, visual memory breakdown (resident vs cached), and interactive process tree viewing.<\/p>\n<pre><code style=\"color: #38bdf8\"># Install htop on Ubuntu\/Debian\nsudo apt update &amp;&amp; sudo apt install -y htop\n\n# Launch htop\nhtop<\/code><\/pre>\n<p><strong>Key Shortcuts:<\/strong> Press <code>F5<\/code> for Tree View (parent-child relationships), <code>F6<\/code> to sort by MEM% or CPU%, <code>F9<\/code> to send SIGKILL\/SIGTERM directly to a highlighted PID, and <code>F4<\/code> to filter by name.<\/p>\n<h2>Tool 2: btop \u2013 Modern C++ Resource Monitor with Stunning Visuals<\/h2>\n<p><strong>btop<\/strong> (and its predecessor btop++) is widely considered the most visually sophisticated terminal monitor in existence. Written in pure C++, it delivers rich ASCII\/Unicode graphs for per-core frequencies, disk read\/write throughput, download\/upload network adapters, and running processes with zero configuration.<\/p>\n<pre><code style=\"color: #38bdf8\"># Install btop\nsudo apt install -y btop\n\n# Launch btop\nbtop<\/code><\/pre>\n<h2>Tool 3: iotop \u2013 Pinpointing Disk I\/O Bottlenecks<\/h2>\n<p>High Linux load average is frequently caused not by CPU exhaustion, but by <strong>I\/O wait (wa)<\/strong>\u2014where processes freeze while waiting for slow disk read\/write operations. <code>iotop<\/code> monitors Linux kernel I\/O accounting to identify exactly which process is thrashing your disk.<\/p>\n<pre><code style=\"color: #38bdf8\"># Install iotop\nsudo apt install -y iotop\n\n# Monitor only processes actively doing disk I\/O (-o)\nsudo iotop -o -d 1<\/code><\/pre>\n<p>This instantly exposes unindexed MySQL table scans or rogue backup scripts dumping hundreds of megabytes per second.<\/p>\n<h2>Tool 4: glances \u2013 Cross-Platform Monitor with Web UI &amp; REST API<\/h2>\n<p>Developed in Python, <strong>glances<\/strong> monitors CPU, memory, network, disk, Docker containers, and system sensors. Its killer feature is running as a lightweight web server, allowing you to monitor your VPS from any web browser without maintaining an active SSH terminal.<\/p>\n<pre><code style=\"color: #38bdf8\"># Install glances\nsudo apt install -y glances\n\n# Launch web server mode on port 61208\nglances -w<\/code><\/pre>\n<h2>Tool 5: vmstat \u2013 The Zero-Overhead Kernel Diagnostics Engine<\/h2>\n<p>When a server is under severe distress and heavier utilities cannot even launch, <strong>vmstat (Virtual Memory Statistics)<\/strong> provides instant kernel metrics on process run queues (<code>r<\/code>), blocked processes (<code>b<\/code>), swap in\/out (<code>si\/so<\/code>), and CPU context switches (<code>cs<\/code>).<\/p>\n<pre><code style=\"color: #38bdf8\"># Display updates every 1 second\nvmstat 1 10<\/code><\/pre>\n<h2>Feature &amp; Architecture Comparison Table<\/h2>\n<table style=\"width: 100%;border-collapse: collapse;margin: 25px 0;font-size: 14px;text-align: left\">\n<thead>\n<tr style=\"background-color: #0f172a;color: #10b981\">\n<th style=\"padding: 12px;border: 1px solid #334155\">Tool<\/th>\n<th style=\"padding: 12px;border: 1px solid #334155\">Primary Specialty<\/th>\n<th style=\"padding: 12px;border: 1px solid #334155\">RAM Usage<\/th>\n<th style=\"padding: 12px;border: 1px solid #334155\">Disk I\/O Detail<\/th>\n<th style=\"padding: 12px;border: 1px solid #334155\">Docker Container Support<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"background-color: #1e293b;color: #f8fafc\">\n<td style=\"padding: 10px;border: 1px solid #334155\"><strong>htop<\/strong><\/td>\n<td style=\"padding: 10px;border: 1px solid #334155\">Process management &amp; signaling<\/td>\n<td style=\"padding: 10px;border: 1px solid #334155\"><strong style=\"color: #10b981\">~4 MB<\/strong><\/td>\n<td style=\"padding: 10px;border: 1px solid #334155\">Basic<\/td>\n<td style=\"padding: 10px;border: 1px solid #334155\">No<\/td>\n<\/tr>\n<tr style=\"background-color: #0f172a;color: #cbd5e1\">\n<td style=\"padding: 10px;border: 1px solid #334155\"><strong>btop<\/strong><\/td>\n<td style=\"padding: 10px;border: 1px solid #334155\">Full visual hardware HUD<\/td>\n<td style=\"padding: 10px;border: 1px solid #334155\">~14 MB<\/td>\n<td style=\"padding: 10px;border: 1px solid #334155\">High (live graphs)<\/td>\n<td style=\"padding: 10px;border: 1px solid #334155\">No<\/td>\n<\/tr>\n<tr style=\"background-color: #1e293b;color: #f8fafc\">\n<td style=\"padding: 10px;border: 1px solid #334155\"><strong>iotop<\/strong><\/td>\n<td style=\"padding: 10px;border: 1px solid #334155\">Disk I\/O read\/write per PID<\/td>\n<td style=\"padding: 10px;border: 1px solid #334155\">~18 MB (Python)<\/td>\n<td style=\"padding: 10px;border: 1px solid #334155\"><strong style=\"color: #10b981\">Best in Class<\/strong><\/td>\n<td style=\"padding: 10px;border: 1px solid #334155\">No<\/td>\n<\/tr>\n<tr style=\"background-color: #0f172a;color: #cbd5e1\">\n<td style=\"padding: 10px;border: 1px solid #334155\"><strong>glances<\/strong><\/td>\n<td style=\"padding: 10px;border: 1px solid #334155\">Remote Web UI &amp; Prometheus export<\/td>\n<td style=\"padding: 10px;border: 1px solid #334155\">~35 MB<\/td>\n<td style=\"padding: 10px;border: 1px solid #334155\">Moderate<\/td>\n<td style=\"padding: 10px;border: 1px solid #334155\"><strong style=\"color: #10b981\">Yes (Native)<\/strong><\/td>\n<\/tr>\n<tr style=\"background-color: #1e293b;color: #f8fafc\">\n<td style=\"padding: 10px;border: 1px solid #334155\"><strong>vmstat<\/strong><\/td>\n<td style=\"padding: 10px;border: 1px solid #334155\">Kernel memory &amp; run queues<\/td>\n<td style=\"padding: 10px;border: 1px solid #334155\"><strong style=\"color: #10b981\">&lt; 1 MB<\/strong><\/td>\n<td style=\"padding: 10px;border: 1px solid #334155\">Summary blocks<\/td>\n<td style=\"padding: 10px;border: 1px solid #334155\">No<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Frequently Asked Questions (FAQ)<\/h2>\n<div style=\"margin: 20px 0\">\n<h3 style=\"color: #10b981;margin-bottom: 5px\">Why does top\/htop show 100% CPU on 1 core when I have 4 cores?<\/h3>\n<p style=\"color: #cbd5e1;font-size: 15px\">In standard Linux tools, 100% CPU indicates that a single hardware thread\/core is fully saturated. On a 4-core server, maximum total utilization is 400%. If a single process shows 100%, that application is single-threaded and bottlenecking on one CPU core.<\/p>\n<h3 style=\"color: #10b981;margin-bottom: 5px\">What is a healthy load average on Linux?<\/h3>\n<p style=\"color: #cbd5e1;font-size: 15px\">A load average equal to your number of CPU cores represents 100% capacity without queueing delays. On a 2-core VPS, a load average below 2.0 indicates healthy capacity. A load above 2.0 means processes are waiting in the kernel run queue.<\/p>\n<\/div>\n<div style=\"background-color: #0f172a;border-left: 4px solid #10b981;padding: 18px 24px;margin: 30px 0;border-radius: 8px\">\n<h3 style=\"color: #10b981;margin-top: 0\">\ud83d\udd17 Recommended Related Technical Guides<\/h3>\n<ul style=\"margin-bottom: 0;color: #cbd5e1\">\n<li><a href=\"https:\/\/cpanelfree.com\/blog\/how-to-benchmark-vps-speed-performance\/\" style=\"color: #38bdf8;text-decoration: underline\">How to Benchmark VPS CPU, NVMe &amp; Network in 60 Seconds<\/a><\/li>\n<li><a href=\"https:\/\/cpanelfree.com\/blog\/how-to-use-ssh-keys-vps\/\" style=\"color: #38bdf8;text-decoration: underline\">Securing SSH Remote Access with Ed25519 Keys<\/a><\/li>\n<li><a href=\"https:\/\/cpanelfree.com\/blog\/how-to-disable-root-login-ubuntu\/\" style=\"color: #38bdf8;text-decoration: underline\">Disabling Root Login and Creating Sudoers on Linux<\/a><\/li>\n<\/ul>\n<\/div>\n<h2>Customizing htop Configuration: Creating Custom Column Profiles<\/h2>\n<p>Many sysadmins are unaware that <strong>htop<\/strong> settings can be persisted permanently by editing <code>~\/.config\/htop\/htoprc<\/code>. Customizing your default layout allows you to monitor critical operational metrics (such as CPU I\/O wait, memory buffers, and resident set size) the moment you open the terminal:<\/p>\n<pre><code style=\"color: #38bdf8\"># Recommended htop customizations in ~\/.config\/htop\/htoprc\nfields=0 48 17 18 38 39 40 2 46 47 49 1\nsort_key=46\nsort_direction=-1\ntree_view=0\nheader_margin=1\ndetailed_cpu_time=1\nshow_cpu_frequency=1\nshow_cpu_temperature=1<\/code><\/pre>\n<p>Enabling <code>detailed_cpu_time=1<\/code> differentiates between user processes, system kernel tasks, soft IRQs, and I\/O wait with distinct color codes, allowing you to instantly determine whether high load is caused by database queries or hardware drive throttling.<\/p>\n<h2>Automating High Load Alert Scripts with Bash &amp; Webhooks<\/h2>\n<p>While interactive terminal monitors are essential when logged in, production servers require automated alerting when CPU or memory thresholds are breached. You can deploy a lightweight bash watchdog script via crontab that triggers alerts to a Discord or Slack webhook:<\/p>\n<pre><code style=\"color: #38bdf8\">#!\/bin\/bash\n# Check 1-minute load average\nLOAD=$(awk '{print $1}' \/proc\/loadavg | cut -d. -f1)\nCORES=$(nproc)\nTHRESHOLD=$((CORES * 2))\n\nif [ \"$LOAD\" -ge \"$THRESHOLD\" ]; then\n  MESSAGE=\"\u26a0\ufe0f High Load Alert on $(hostname): Current load is ${LOAD} across ${CORES} CPU cores!\"\n  # Dispatch to webhook or email notification\n  curl -s -X POST -H 'Content-type: application\/json'     --data \"{\\\"text\\\":\\\"$MESSAGE\\\"}\" YOUR_WEBHOOK_URL\nfi<\/code><\/pre>\n<div style=\"background: linear-gradient(135deg, #0284c7 0%, #0369a1 100%);color: #ffffff;padding: 28px;border-radius: 12px;margin: 35px 0;text-align: center\">\n<h3 style=\"color: #ffffff;margin-top: 0;font-size: 22px\">Monitor High-Performance Cloud VPS on CpanelFree<\/h3>\n<p style=\"color: #e0f2fe;font-size: 15px;max-width: 650px;margin: 0 auto 18px auto\">Experience unthrottled dedicated CPU performance and lightning-fast NVMe read\/write speeds on CpanelFree cloud servers.<\/p>\n<p>  <a href=\"https:\/\/cpanelfree.com\/\" style=\"background-color: #ffffff;color: #0284c7;font-weight: 700;padding: 12px 28px;border-radius: 8px;text-decoration: none;display: inline-block\">Get Free Cloud Hosting Today &rarr;<\/a>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Quick Technical Answer: For daily interactive process management, htop is the essential baseline. For modern visual aesthetics with GPU, disk, and network graphs, use btop (sudo apt install btop). If you need per-process disk read\/write bandwidth diagnosis, use iotop. To export metrics over a web interface or REST API, install glances. For lightweight zero-overhead kernel &#8230; <a title=\"Top 5 Terminal Monitoring Tools: htop, btop, glances, iotop &amp; vmstat Compared\" class=\"read-more\" href=\"https:\/\/cpanelfree.com\/blog\/terminal-monitoring-tools-htop-btop-glances-iotop-vmstat\/\" aria-label=\"Read more about Top 5 Terminal Monitoring Tools: htop, btop, glances, iotop &amp; vmstat Compared\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":4297,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[88,62,51],"tags":[],"class_list":["post-4298","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cloud-vps","category-comparisons","category-tutorials"],"_links":{"self":[{"href":"https:\/\/cpanelfree.com\/blog\/wp-json\/wp\/v2\/posts\/4298","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cpanelfree.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cpanelfree.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cpanelfree.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cpanelfree.com\/blog\/wp-json\/wp\/v2\/comments?post=4298"}],"version-history":[{"count":1,"href":"https:\/\/cpanelfree.com\/blog\/wp-json\/wp\/v2\/posts\/4298\/revisions"}],"predecessor-version":[{"id":4306,"href":"https:\/\/cpanelfree.com\/blog\/wp-json\/wp\/v2\/posts\/4298\/revisions\/4306"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cpanelfree.com\/blog\/wp-json\/wp\/v2\/media\/4297"}],"wp:attachment":[{"href":"https:\/\/cpanelfree.com\/blog\/wp-json\/wp\/v2\/media?parent=4298"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cpanelfree.com\/blog\/wp-json\/wp\/v2\/categories?post=4298"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cpanelfree.com\/blog\/wp-json\/wp\/v2\/tags?post=4298"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}