CPU temperature embedded in Bash command prompt
I was wondering if it would be possible to obtain the CPU temperature and embed it into the command prompt.
This is my output for sensors
:
$}-sensors
coretemp-isa-0000
Adapter: ISA adapter
Physical id 0: +55.0°C (high = +87.0°C, crit = +105.0°C)
Core 0: +55.0°C (high = +87.0°C, crit = +105.0°C)
Core 1: +52.0°C (high = +87.0°C, crit = +105.0°C)
Could you please show me how to use the grep
function to embed the temperature into my command prompt?
Solution 1:
Yes, it is possible, but the details depend on your system. In most cases, the command sensors
should show it.
-
Install the necessary package
sudo apt-get install lm-sensors
-
Run
sensors-detect
and follow the promptssudo sensors-detect
Install any extra drivers if
sensors-detect
tells you to.-
Run
sensors
to make sure it works$ sensors acpitz-virtual-0 Adapter: Virtual device temp1: +27.8°C (crit = +110.0°C) temp2: +29.8°C (crit = +110.0°C) coretemp-isa-0000 Adapter: ISA adapter Physical id 0: +63.0°C (high = +105.0°C, crit = +105.0°C) Core 0: +62.0°C (high = +105.0°C, crit = +105.0°C) Core 1: +63.0°C (high = +105.0°C, crit = +105.0°C) nct6776-isa-0a00 Adapter: ISA adapter Vcore: +1.86 V (min = +0.00 V, max = +1.74 V) ALARM in1: +1.36 V (min = +0.00 V, max = +0.00 V) ALARM AVCC: +3.33 V (min = +2.98 V, max = +3.63 V) +3.3V: +3.33 V (min = +2.98 V, max = +3.63 V) in4: +1.01 V (min = +0.00 V, max = +0.00 V) ALARM in5: +0.00 V (min = +0.00 V, max = +0.00 V) in6: +0.21 V (min = +0.00 V, max = +0.00 V) ALARM 3VSB: +3.31 V (min = +2.98 V, max = +3.63 V) Vbat: +3.18 V (min = +2.70 V, max = +3.63 V) fan1: 0 RPM (min = 0 RPM) fan2: 3292 RPM (min = 0 RPM) SYSTIN: +0.0°C (high = +0.0°C, hyst = +0.0°C) sensor = thermistor CPUTIN: +51.0°C (high = +80.0°C, hyst = +75.0°C) sensor = CPU diode AUXTIN: +0.0°C (high = +80.0°C, hyst = +75.0°C) sensor = CPU diode PCH_CHIP_CPU_MAX_TEMP: +58.0°C (high = +80.0°C, hyst = +75.0°C) PECI Agent 0: +60.0°C (high = +80.0°C, hyst = +75.0°C) (crit = +105.0°C) PCH_CHIP_TEMP: +0.0°C PCH_CPU_TEMP: +0.0°C intrusion0: OK intrusion1: OK beep_enable: disabled
-
Parse the output to get only the CPU temperature.
As you can see above, the output on my system is different than yours. However, the line we care about here is the same. You can get the CPU temperature with:
$ sensors | grep -oP 'Physical.*?\+\K[0-9.]+' 63.0
-
Edit your
~/.bashrc
(or equivalent file if you're using another shell) and add a function that runs the command above:show_temp(){ sensors | grep -oP 'Physical.*?\+\K[0-9.]+' }
-
Use the function in your prompt. For example:
PS1="\u@\h $(show_temp) $ "
Solution 2:
Install lm-sensors:
sudo apt-get install lm-sensors
Detect what sensors are available:
sudo sensors-detect
To show the temperature:
sensors