I have a Raspberry Pi 3 and I'm thinking of running a process 7/24, but it sometimes uses CPU too much, and from my last 2 questions, I understood that Raspberry Pi 3 cannot power itself off on high temperature. Because of this, I decided to configure raspberry pi to kill that application on high temperature, but I don't have any ideas about how I can do that. How can I do that?


The following shell script uses the videocore utility vcgencmd measure_temp to get a line like temp=37.4'C. It then does some string magic to isolate the 37 from that string, which is then compared to 35. If it's smaller, it waits a second, then tests the temperature again. If it's 35 or more, $HOT_PID is killed. That PID was set to the program in question, which was started in the background.

/path/to/hot/app &
while [ $(vcgencmd measure_temp|{ IFS== read DUMMY TEMP ; echo $TEMP ; }|{ IFS=. read INTTEMP DUMMY ; echo $INTTEMP ; }) -lt 35 ] ; do sleep 1 ; done
kill $HOT_PID

Note this fails on applications which fork, because you had to kill all the child processes, too. But you could still use the test line as a base and make a better script. Or simply shutdown now the Pi.

| improve this answer | |
  • Thanks for the answer. I can't test it now but I'll comment when I test it. Also, isn't 35 too low? – pixelomer Feb 25 '18 at 17:00
  • 1
    Please adjust it as you need it. – Janka Feb 25 '18 at 17:00
  • instead of kill it could be useful to suspend process execution with SIGSTOP signal for later resumption – Fabian Feb 25 '18 at 17:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.