gtop: Awesome system monitoring dashboard for Linux/macOS Unix terminal

last updated in Categories Command Line Hacks, Debian Linux, Howto

I like htop interactive process viewer. Recently I found another one called gtop. It is similar to top, but fancier. Let us see how to install and use gtop on a Linux or macOS Unix based system.

Installation

First you need to install npm using apt command/apt-get command on an Ubuntu or Debian based system:
$ sudo apt install npm nodejs
Sample outputs:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  gyp javascript-common libicu55 libjs-inherits libjs-jquery libjs-node-uuid libjs-underscore libpython-stdlib libpython2.7-minimal libpython2.7-stdlib libssl-dev libssl-doc libuv1 libuv1-dev node-abbrev
  node-ansi node-ansi-color-table node-archy node-async node-block-stream node-combined-stream node-cookie-jar node-delayed-stream node-forever-agent node-form-data node-fstream node-fstream-ignore
  node-github-url-from-git node-glob node-graceful-fs node-gyp node-inherits node-ini node-json-stringify-safe node-lockfile node-lru-cache node-mime node-minimatch node-mkdirp node-mute-stream node-node-uuid
  node-nopt node-normalize-package-data node-npmlog node-once node-osenv node-qs node-read node-read-package-json node-request node-retry node-rimraf node-semver node-sha node-sigmund node-slide node-tar
  node-tunnel-agent node-underscore node-which nodejs nodejs-dev python python-minimal python-pkg-resources python2.7 python2.7-minimal zlib1g-dev
Suggested packages:
  apache2 | lighttpd | httpd node-hawk node-aws-sign node-oauth-sign node-http-signature debhelper python-doc python-tk python-setuptools python2.7-doc binfmt-support
The following NEW packages will be installed:
  gyp javascript-common libicu55 libjs-inherits libjs-jquery libjs-node-uuid libjs-underscore libpython-stdlib libpython2.7-minimal libpython2.7-stdlib libssl-dev libssl-doc libuv1 libuv1-dev node-abbrev
  node-ansi node-ansi-color-table node-archy node-async node-block-stream node-combined-stream node-cookie-jar node-delayed-stream node-forever-agent node-form-data node-fstream node-fstream-ignore
  node-github-url-from-git node-glob node-graceful-fs node-gyp node-inherits node-ini node-json-stringify-safe node-lockfile node-lru-cache node-mime node-minimatch node-mkdirp node-mute-stream node-node-uuid
  node-nopt node-normalize-package-data node-npmlog node-once node-osenv node-qs node-read node-read-package-json node-request node-retry node-rimraf node-semver node-sha node-sigmund node-slide node-tar
  node-tunnel-agent node-underscore node-which nodejs nodejs-dev npm python python-minimal python-pkg-resources python2.7 python2.7-minimal zlib1g-dev
0 upgraded, 69 newly installed, 0 to remove and 0 not upgraded.
Need to get 20.2 MB of archives.
After this operation, 88.8 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libpython2.7-minimal amd64 2.7.12-1ubuntu0~16.04.2 [338 kB]

A note about CentOS/RHEL 7 users

If you are using a RHEL/CentOS Linux 7, first install a package named epel-release and followed by nodejs and npm using the yum command:
# yum install epel-release
# yum install nodejs npm

A note about Fedora Linux users

If you are using a Fedora Linux, install nodejs and npm using the dnf command:
$ sudo dnf install epel-release
$ sudo dnf yum install nodejs npm

A note about macOS Unix users

Type the following brew command:
$ brew install node

Installing gtop

To install gtop, type the following command:
npm install gtop -g
Sample outputs:

/usr/local/bin/gtop -> /usr/local/lib/node_modules/gtop/bin/gtop
/usr/local/lib
โ””โ”€โ”ฌ gtop@0.1.5 
  โ”œโ”€โ”€ blessed@0.1.81 
  โ”œโ”€โ”ฌ blessed-contrib@4.8.5 
  โ”‚ โ”œโ”€โ”€ ansi-term@0.0.2 
  โ”‚ โ”œโ”€โ”ฌ chalk@1.1.3 
  โ”‚ โ”‚ โ”œโ”€โ”€ ansi-styles@2.2.1 
  โ”‚ โ”‚ โ”œโ”€โ”€ escape-string-regexp@1.0.5 
  โ”‚ โ”‚ โ”œโ”€โ”€ has-ansi@2.0.0 
  โ”‚ โ”‚ โ””โ”€โ”€ supports-color@2.0.0 
  โ”‚ โ”œโ”€โ”ฌ drawille-canvas-blessed-contrib@0.1.3 
  โ”‚ โ”‚ โ”œโ”€โ”€ bresenham@0.0.3 
  โ”‚ โ”‚ โ”œโ”€โ”€ drawille-blessed-contrib@1.0.0 
  โ”‚ โ”‚ โ””โ”€โ”€ gl-matrix@2.4.0 
  โ”‚ โ”œโ”€โ”€ lodash@4.17.4 
  โ”‚ โ”œโ”€โ”ฌ map-canvas@0.1.5 
  โ”‚ โ”‚ โ””โ”€โ”ฌ xml2js@0.4.19 
  โ”‚ โ”‚   โ”œโ”€โ”€ sax@1.2.4 
  โ”‚ โ”‚   โ””โ”€โ”€ xmlbuilder@9.0.4 
  โ”‚ โ”œโ”€โ”€ marked@0.3.7 
  โ”‚ โ”œโ”€โ”ฌ marked-terminal@1.7.0 
  โ”‚ โ”‚ โ”œโ”€โ”ฌ cardinal@1.0.0 
  โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ ansicolors@0.2.1 
  โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ redeyed@1.0.1 
  โ”‚ โ”‚ โ”‚   โ””โ”€โ”€ esprima@3.0.0 
  โ”‚ โ”‚ โ”œโ”€โ”ฌ cli-table@0.3.1 
  โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ colors@1.0.3 
  โ”‚ โ”‚ โ”œโ”€โ”€ lodash.assign@4.2.0 
  โ”‚ โ”‚ โ””โ”€โ”ฌ node-emoji@1.8.1 
  โ”‚ โ”‚   โ””โ”€โ”€ lodash.toarray@4.4.0 
  โ”‚ โ”œโ”€โ”ฌ memory-streams@0.1.2 
  โ”‚ โ”‚ โ””โ”€โ”ฌ readable-stream@1.0.34 
  โ”‚ โ”‚   โ”œโ”€โ”€ core-util-is@1.0.2 
  โ”‚ โ”‚   โ”œโ”€โ”€ inherits@2.0.3 
  โ”‚ โ”‚   โ”œโ”€โ”€ isarray@0.0.1 
  โ”‚ โ”‚   โ””โ”€โ”€ string_decoder@0.10.31 
  โ”‚ โ”œโ”€โ”€ memorystream@0.3.1 
  โ”‚ โ”œโ”€โ”ฌ picture-tube@0.0.4 
  โ”‚ โ”‚ โ”œโ”€โ”€ buffers@0.1.1 
  โ”‚ โ”‚ โ”œโ”€โ”€ charm@0.1.2 
  โ”‚ โ”‚ โ”œโ”€โ”ฌ event-stream@0.9.8 
  โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ optimist@0.2.8 
  โ”‚ โ”‚ โ”œโ”€โ”ฌ optimist@0.3.7 
  โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ wordwrap@0.0.3 
  โ”‚ โ”‚ โ”œโ”€โ”€ png-js@0.1.1 
  โ”‚ โ”‚ โ””โ”€โ”€ request@2.9.203 
  โ”‚ โ”œโ”€โ”ฌ request@2.83.0 
  โ”‚ โ”‚ โ”œโ”€โ”€ aws-sign2@0.7.0 
  โ”‚ โ”‚ โ”œโ”€โ”€ aws4@1.6.0 
  โ”‚ โ”‚ โ”œโ”€โ”€ caseless@0.12.0 
  โ”‚ โ”‚ โ”œโ”€โ”ฌ combined-stream@1.0.5 
  โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ delayed-stream@1.0.0 
  โ”‚ โ”‚ โ”œโ”€โ”€ extend@3.0.1 
  โ”‚ โ”‚ โ”œโ”€โ”€ forever-agent@0.6.1 
  โ”‚ โ”‚ โ”œโ”€โ”ฌ form-data@2.3.1 
  โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ asynckit@0.4.0 
  โ”‚ โ”‚ โ”œโ”€โ”ฌ har-validator@5.0.3 
  โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ ajv@5.5.1 
  โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ co@4.6.0 
  โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ fast-deep-equal@1.0.0 
  โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ fast-json-stable-stringify@2.0.0 
  โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ json-schema-traverse@0.3.1 
  โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ har-schema@2.0.0 
  โ”‚ โ”‚ โ”œโ”€โ”ฌ hawk@6.0.2 
  โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ boom@4.3.1 
  โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ cryptiles@3.1.2 
  โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ boom@5.2.0 
  โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ hoek@4.2.0 
  โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ sntp@2.1.0 
  โ”‚ โ”‚ โ”œโ”€โ”ฌ http-signature@1.2.0 
  โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ assert-plus@1.0.0 
  โ”‚ โ”‚ โ”‚ โ”œโ”€โ”ฌ jsprim@1.4.1 
  โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ extsprintf@1.3.0 
  โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ json-schema@0.2.3 
  โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ verror@1.10.0 
  โ”‚ โ”‚ โ”‚ โ””โ”€โ”ฌ sshpk@1.13.1 
  โ”‚ โ”‚ โ”‚   โ”œโ”€โ”€ asn1@0.2.3 
  โ”‚ โ”‚ โ”‚   โ”œโ”€โ”€ bcrypt-pbkdf@1.0.1 
  โ”‚ โ”‚ โ”‚   โ”œโ”€โ”€ dashdash@1.14.1 
  โ”‚ โ”‚ โ”‚   โ”œโ”€โ”€ ecc-jsbn@0.1.1 
  โ”‚ โ”‚ โ”‚   โ”œโ”€โ”€ getpass@0.1.7 
  โ”‚ โ”‚ โ”‚   โ”œโ”€โ”€ jsbn@0.1.1 
  โ”‚ โ”‚ โ”‚   โ””โ”€โ”€ tweetnacl@0.14.5 
  โ”‚ โ”‚ โ”œโ”€โ”€ is-typedarray@1.0.0 
  โ”‚ โ”‚ โ”œโ”€โ”€ isstream@0.1.2 
  โ”‚ โ”‚ โ”œโ”€โ”€ json-stringify-safe@5.0.1 
  โ”‚ โ”‚ โ”œโ”€โ”ฌ mime-types@2.1.17 
  โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ mime-db@1.30.0 
  โ”‚ โ”‚ โ”œโ”€โ”€ oauth-sign@0.8.2 
  โ”‚ โ”‚ โ”œโ”€โ”€ performance-now@2.1.0 
  โ”‚ โ”‚ โ”œโ”€โ”€ qs@6.5.1 
  โ”‚ โ”‚ โ”œโ”€โ”€ safe-buffer@5.1.1 
  โ”‚ โ”‚ โ”œโ”€โ”€ stringstream@0.0.5 
  โ”‚ โ”‚ โ”œโ”€โ”ฌ tough-cookie@2.3.3 
  โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ punycode@1.4.1 
  โ”‚ โ”‚ โ”œโ”€โ”€ tunnel-agent@0.6.0 
  โ”‚ โ”‚ โ””โ”€โ”€ uuid@3.1.0 
  โ”‚ โ”œโ”€โ”ฌ sparkline@0.1.2 
  โ”‚ โ”‚ โ”œโ”€โ”€ here@0.0.2 
  โ”‚ โ”‚ โ””โ”€โ”ฌ nopt@2.1.2 
  โ”‚ โ”‚   โ””โ”€โ”€ abbrev@1.1.1 
  โ”‚ โ”œโ”€โ”ฌ strip-ansi@3.0.1 
  โ”‚ โ”‚ โ””โ”€โ”€ ansi-regex@2.1.1 
  โ”‚ โ”œโ”€โ”€ term-canvas@0.0.5 
  โ”‚ โ””โ”€โ”€ x256@0.0.2 
  โ””โ”€โ”€ systeminformation@3.33.8

Usage

Simply type the following command:
gtop
OR
nodejs /usr/local/bin/gtop
Sample outputs:

Fig.01: gtop in action
Fig.01: gtop in action

You can sort the process table by pressing the following keys:

  1. Press p to sort by process ID (PID).
  2. Press c to sort by CPU usage.
  3. Press m to sort by memory usage.

Even though gtop is pretty fancy. I recommend htop tool or atop utility or top command only for server usage.

See also

Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin, DevOps engineer, and a trainer for the Linux operating system/Unix shell scripting. Get the latest tutorials on SysAdmin, Linux/Unix and open source topics via RSS/XML feed or weekly email newsletter.

6 comment

  1. On GNU/Linux Trisquel 7 (libre version of Ubuntu 14.04 LTS), something fails:
    # apt install npm nodejs -> OK
    $ npm install gtop -g
    (…)
    npm ERR! Please try running this command again as root/Administrator.
    (…)
    # npm install gtop -g -> OK
    $ gtop
    /usr/local/lib/node_modules/gtop/lib/monitor/cpu.js:8
    si.currentLoad(data => {
    ^
    SyntaxError: Unexpected token >
    # gtop
    /usr/local/lib/node_modules/gtop/lib/monitor/cpu.js:8
    si.currentLoad(data => {
    ^
    SyntaxError: Unexpected token >

  2. This is a rocking tool. Just one teensy little thing, they may want to look at why it’s using so much CPU…. my test box with 2 x 3.3Ghz vCPU’s allocated is sitting at 10% or more just for gtop.

  3. Debian :-(

    npm WARN engine gtop@0.1.5: wanted: {“node”:”>=4.0.0″} (current: {“node”:”0.10.29″,”npm”:”1.4.21″})

    Still, have a question? Get help on our forum!