CAUTION : The following script might damage/burn the laptop if used incorrectly.
Requires : sensors-detect , gnuplot
CAUTION : The following script might damage/burn the laptop if used incorrectly.
An easier way would be to use Psensor http://www.ubuntugeek.com/psensor-a-graphical-temperature-monitor.html but I want to do this manually to have greater control.
The temperature monitor script
--------------------------------
#!/bin/bash
# CPU temperature monitor script
# do not have to edit beyond this line
#------------------------------------------
if [ "$1" == "kill" ]
then
# if command line parameter is "kill" then kill all running instances of this script.
nnn=`ps aux | grep $0 | tr -s " " | cut -d" " -f2 `
echo -e $$ "\n====" # prints PID of this instance of script. make sure not to kill itself.
for ii in `echo $nnn`
do
if [ "$ii" -ne "$$" ]
then
echo "Killing PID:" $ii
kill -9 $ii
fi
done
exit
fi
# exit if another instance is running
process=$0
# value of this exp_count depends on the number of cores of CPU. check the process on first run and apply the value here. Need to uncomment the line #echo ${run_count} to chcck no. of cores used by kernel. It maybe different for the physical no. of cores.
exp_count=2
#echo $process
run_count=`ps aux | grep $process | grep -v 'grep' | wc -l`
# uncomment this line to chcck no. of cores used by kernel. It maybe different for the physical no. of cores.
#echo ${run_count}
if [ ${exp_count} -eq ${run_count} ] ; then
# do nothing; just exit the if statement
echo
else
echo "another instance is running"
echo -e "The script goes into background. To kill it at any time use : " `basename $0` "kill"
exit
fi
{
while [ 1 ]
do
sensors | grep "Core" | cut -d":" -f2 | cut -d"(" -f1 | tr -s " " | sed 's/[^1234567890]/ /g' | cut -d" " -f3 | tr '\n' ' ' >> cputemp.log
echo >> cputemp.log
sleep 3
done
}&
--------------------------------
Save it as a tempmon.sh and chmod 755 and run as ./tempmon.sh
It will keep logging the temperature to a log file called cputemp.log in thesame directory as the script. It polls at an interval of 3 secs. To change it change the sleep counter in the script in seconds.
Now, the CPU temperature log data in the cputemp.log file has to be plotted in real time. FOr this install gnuplot and use the following set of commands.
Save a file named replot_every_minute.gp
with the commands
pause 3; reread; replot
gnuplot> plot "cputemp.log" u 1 w lines
gnuplot> load "replot_every_minute.gp"
A real time graph of CPU temperature would show.
Comments