Monitor Linux CPU temperature, frequency, power in a graphical way

welcome-s-tui-1-4598593
S-tui is a free and open source terminal UI for monitoring your computer. s-tui allows to monitor CPU temperature, frequency, power and utilization in a graphical way from the terminal. It is written in Python and need root permission to use the s-tui. It is useful for:

  1. Watch your CPU temperature/utilization/frequency/power
  2. See performance dips caused by thermal throttling
  3. No need to use X-server. Perfect for headless usage including Raspberry PI

Let us see how to install and use s-tui on a Linux based system.

Step 1 – Install pip

Type the following command to install pip – a package management for Python using apt command/apt-get command:
$ sudo apt install python-pip stress
Sample outputs:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  binutils build-essential cpp cpp-5 dpkg-dev fakeroot g++ g++-5 gcc gcc-5 libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan2 libatomic1 libc-dev-bin libc6-dev libcc1-0 libcilkrts5 libdpkg-perl
  libexpat1-dev libfakeroot libfile-fcntllock-perl libgcc-5-dev libgomp1 libisl15 libitm1 liblsan0 libmpc3 libmpx0 libpython-all-dev libpython-dev libpython-stdlib libpython2.7 libpython2.7-dev libpython2.7-minimal libpython2.7-stdlib
  libquadmath0 libstdc++-5-dev libtsan0 libubsan0 linux-libc-dev make manpages-dev python python-all python-all-dev python-dev python-minimal python-pip-whl python-pkg-resources python-setuptools python-wheel python2.7 python2.7-dev
  python2.7-minimal
Suggested packages:
  binutils-doc cpp-doc gcc-5-locales debian-keyring g++-multilib g++-5-multilib gcc-5-doc libstdc++6-5-dbg gcc-multilib autoconf automake libtool flex bison gdb gcc-doc gcc-5-multilib libgcc1-dbg libgomp1-dbg libitm1-dbg libatomic1-dbg
  libasan2-dbg liblsan0-dbg libtsan0-dbg libubsan0-dbg libcilkrts5-dbg libmpx0-dbg libquadmath0-dbg glibc-doc libstdc++-5-doc make-doc python-doc python-tk python-setuptools-doc python2.7-doc binfmt-support
The following NEW packages will be installed:
  binutils build-essential cpp cpp-5 dpkg-dev fakeroot g++ g++-5 gcc gcc-5 libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan2 libatomic1 libc-dev-bin libc6-dev libcc1-0 libcilkrts5 libdpkg-perl
  libexpat1-dev libfakeroot libfile-fcntllock-perl libgcc-5-dev libgomp1 libisl15 libitm1 liblsan0 libmpc3 libmpx0 libpython-all-dev libpython-dev libpython-stdlib libpython2.7 libpython2.7-dev libpython2.7-minimal libpython2.7-stdlib
  libquadmath0 libstdc++-5-dev libtsan0 libubsan0 linux-libc-dev make manpages-dev python python-all python-all-dev python-dev python-minimal python-pip python-pip-whl python-pkg-resources python-setuptools python-wheel python2.7
  python2.7-dev python2.7-minimal
0 upgraded, 57 newly installed, 0 to remove and 0 not upgraded.
Need to get 73.4 MB of archives.
After this operation, 209 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]
....
..
...
Setting up libalgorithm-merge-perl (0.08-3) ...
Setting up libexpat1-dev:amd64 (2.1.0-7ubuntu0.16.04.3) ...
Setting up libfile-fcntllock-perl (0.22-3) ...
Setting up libpython2.7:amd64 (2.7.12-1ubuntu0~16.04.2) ...
Setting up libpython2.7-dev:amd64 (2.7.12-1ubuntu0~16.04.2) ...
Setting up libpython-dev:amd64 (2.7.11-1) ...
Setting up libpython-all-dev:amd64 (2.7.11-1) ...
Setting up manpages-dev (4.04-2) ...
Setting up python-all (2.7.11-1) ...
Setting up python2.7-dev (2.7.12-1ubuntu0~16.04.2) ...
Setting up python-dev (2.7.11-1) ...
Setting up python-all-dev (2.7.11-1) ...
Setting up python-pip-whl (8.1.1-2ubuntu0.4) ...
Setting up python-pip (8.1.1-2ubuntu0.4) ...
Setting up python-pkg-resources (20.7.0-1) ...
Setting up python-setuptools (20.7.0-1) ...
Setting up python-wheel (0.29.0-1) ...
Processing triggers for libc-bin (2.23-0ubuntu9) ...

Reading package lists… Done
Building dependency tree
Reading state information… Done
The following additional packages will be installed:
binutils build-essential cpp cpp-5 dpkg-dev fakeroot g++ g++-5 gcc gcc-5 libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan2 libatomic1 libc-dev-bin libc6-dev libcc1-0 libcilkrts5 libdpkg-perl
libexpat1-dev libfakeroot libfile-fcntllock-perl libgcc-5-dev libgomp1 libisl15 libitm1 liblsan0 libmpc3 libmpx0 libpython-all-dev libpython-dev libpython-stdlib libpython2.7 libpython2.7-dev libpython2.7-minimal libpython2.7-stdlib
libquadmath0 libstdc++-5-dev libtsan0 libubsan0 linux-libc-dev make manpages-dev python python-all python-all-dev python-dev python-minimal python-pip-whl python-pkg-resources python-setuptools python-wheel python2.7 python2.7-dev
python2.7-minimal
Suggested packages:
binutils-doc cpp-doc gcc-5-locales debian-keyring g++-multilib g++-5-multilib gcc-5-doc libstdc++6-5-dbg gcc-multilib autoconf automake libtool flex bison gdb gcc-doc gcc-5-multilib libgcc1-dbg libgomp1-dbg libitm1-dbg libatomic1-dbg
libasan2-dbg liblsan0-dbg libtsan0-dbg libubsan0-dbg libcilkrts5-dbg libmpx0-dbg libquadmath0-dbg glibc-doc libstdc++-5-doc make-doc python-doc python-tk python-setuptools-doc python2.7-doc binfmt-support
The following NEW packages will be installed:
binutils build-essential cpp cpp-5 dpkg-dev fakeroot g++ g++-5 gcc gcc-5 libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan2 libatomic1 libc-dev-bin libc6-dev libcc1-0 libcilkrts5 libdpkg-perl
libexpat1-dev libfakeroot libfile-fcntllock-perl libgcc-5-dev libgomp1 libisl15 libitm1 liblsan0 libmpc3 libmpx0 libpython-all-dev libpython-dev libpython-stdlib libpython2.7 libpython2.7-dev libpython2.7-minimal libpython2.7-stdlib
libquadmath0 libstdc++-5-dev libtsan0 libubsan0 linux-libc-dev make manpages-dev python python-all python-all-dev python-dev python-minimal python-pip python-pip-whl python-pkg-resources python-setuptools python-wheel python2.7
python2.7-dev python2.7-minimal
0 upgraded, 57 newly installed, 0 to remove and 0 not upgraded.
Need to get 73.4 MB of archives.
After this operation, 209 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]
….
..

Setting up libalgorithm-merge-perl (0.08-3) …
Setting up libexpat1-dev:amd64 (2.1.0-7ubuntu0.16.04.3) …
Setting up libfile-fcntllock-perl (0.22-3) …
Setting up libpython2.7:amd64 (2.7.12-1ubuntu0~16.04.2) …
Setting up libpython2.7-dev:amd64 (2.7.12-1ubuntu0~16.04.2) …
Setting up libpython-dev:amd64 (2.7.11-1) …
Setting up libpython-all-dev:amd64 (2.7.11-1) …
Setting up manpages-dev (4.04-2) …
Setting up python-all (2.7.11-1) …
Setting up python2.7-dev (2.7.12-1ubuntu0~16.04.2) …
Setting up python-dev (2.7.11-1) …
Setting up python-all-dev (2.7.11-1) …
Setting up python-pip-whl (8.1.1-2ubuntu0.4) …
Setting up python-pip (8.1.1-2ubuntu0.4) …
Setting up python-pkg-resources (20.7.0-1) …
Setting up python-setuptools (20.7.0-1) …
Setting up python-wheel (0.29.0-1) …
Processing triggers for libc-bin (2.23-0ubuntu9) …

Step 2 – Install s-tui

Type the following command to install it:
$ sudo pip install s-tui

Collecting s-tui
  Downloading s-tui-0.6.7.2.tar.gz
Collecting urwid>=1.3.1 (from s-tui)
  Downloading urwid-1.3.1.tar.gz (588kB)
    100% |████████████████████████████████| 593kB 558kB/s 
Collecting psutil>=5.2.0 (from s-tui)
  Downloading psutil-5.4.2.tar.gz (411kB)
    100% |████████████████████████████████| 419kB 646kB/s 
Installing collected packages: urwid, psutil, s-tui
  Running setup.py install for urwid ... done
  Running setup.py install for psutil ... done
  Running setup.py install for s-tui ... done
Successfully installed psutil-5.4.2 s-tui-0.6.7.2 urwid-1.3.1

Arch Linux users can type the following command to install it:
$ sudo yaourt -S s-tui

Step 3 – Use it

Simply type the following command:
$ sudo s-tui
Sample outputs:

s-tui-outputs-5485486
Gif. 01: s-tui in action

Getting help

s-tui has many more option. Type the following command to see them:
$ s-tui --help
Sample outputs:

usage: s-tui [-h] [-d] [-c] [-t] [-j] [-nm] [-v] [-ct CUSTOM_TEMP]
             [-cf CUSTOM_FAN]
 
TUI interface:
 
The side bar houses the controls for the displayed grahps.
At the bottom of the side bar, more information is presented in text form.
 
* Use the arrow keys or 'hjkl' to navigate the side bar
* Toggle between stressed and regular operation using the radio buttons in 'Modes'.
* If you wish to alternate stress defaults, you can do it in 'Stress options'
* Select a different temperature sensors from the 'Temp Sensors' menu
* Change time between updates using the 'Refresh' field
* Use the <Reset> button to reset graphs and statistics
* Toggle displayed graphs by selecting the [X] check box
* If a sensor is not available on your system, N/A is presented
* If your system supports it, you can use the utf8 button to get a smoother graph
* Press 'q' or the <quit> button to quit
 
* Run `s-tui --help` to get this message and additional cli options
 
optional arguments:
  -h, --help            show this help message and exit
  -d, --debug           Output debug log to _s-tui.log
  -c, --csv             Save stats to csv file
  -t, --terminal        Display a single line of stats without tui
  -j, --json            Display a single line of stats in JSON format
  -nm, --no-mouse       Disable Mouse for TTY systems
  -v, --version         Display version
  -ct CUSTOM_TEMP, --custom_temp CUSTOM_TEMP
                        Custom temperature sensors.
                        The format is: <sensors>,<number>
                        As it appears in 'sensors'
                        e.g
                        > sensors
                        it8792-isa-0a60,
                        temp1: +47.0C
                        temp2: +35.0C
                        temp3: +37.0C
 
                        use: -ct it8792,0 for temp 1
 
  -cf CUSTOM_FAN, --custom_fan CUSTOM_FAN
                        Similar to custom temp
                        e.g
                        >sensors
                        thinkpad-isa-0000
                        Adapter: ISA adapter
                        fan1:        1975 RPM
 
                        use: -cf thinkpad,0 for fan1

usage: s-tui [-h] [-d] [-c] [-t] [-j] [-nm] [-v] [-ct CUSTOM_TEMP]
[-cf CUSTOM_FAN] TUI interface: The side bar houses the controls for the displayed grahps.
At the bottom of the side bar, more information is presented in text form. * Use the arrow keys or ‘hjkl’ to navigate the side bar
* Toggle between stressed and regular operation using the radio buttons in ‘Modes’.
* If you wish to alternate stress defaults, you can do it in ‘Stress options’
* Select a different temperature sensors from the ‘Temp Sensors’ menu
* Change time between updates using the ‘Refresh’ field
* Use the <Reset> button to reset graphs and statistics
* Toggle displayed graphs by selecting the [X] check box
* If a sensor is not available on your system, N/A is presented
* If your system supports it, you can use the utf8 button to get a smoother graph
* Press ‘q’ or the <quit> button to quit * Run `s-tui –help` to get this message and additional cli options optional arguments:
-h, –help show this help message and exit
-d, –debug Output debug log to _s-tui.log
-c, –csv Save stats to csv file
-t, –terminal Display a single line of stats without tui
-j, –json Display a single line of stats in JSON format
-nm, –no-mouse Disable Mouse for TTY systems
-v, –version Display version
-ct CUSTOM_TEMP, –custom_temp CUSTOM_TEMP
Custom temperature sensors.
The format is: <sensors>,<number>
As it appears in ‘sensors’
e.g
> sensors
it8792-isa-0a60,
temp1: +47.0C
temp2: +35.0C
temp3: +37.0C
use: -ct it8792,0 for temp 1
-cf CUSTOM_FAN, –custom_fan CUSTOM_FAN
Similar to custom temp
e.g
>sensors
thinkpad-isa-0000
Adapter: ISA adapter
fan1: 1975 RPM
use: -cf thinkpad,0 for fan1

For more information see s-tui project home page.

 

Source