Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jun 17th, 2012  |  syntax: None  |  size: 1.06 KB  |  hits: 18  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #!/bin/bash
  2.  
  3. # target temperature
  4. ttemp=22
  5.  
  6. # heating slope
  7. slope=5
  8.  
  9. ############################################
  10.  
  11. debug=
  12.  
  13. cores=$(grep -c ^processor$'\t': /proc/cpuinfo); : ${cores:=1}
  14.  
  15. heat () {
  16.   ctemp=$(sensors | sed -nre 's/^[^°]*[+-]([0-9]+)\.[0-9]°.*/\1/p;' | sort -n | head -n 1)
  17.   tdiff=$(( $ttemp - $ctemp ))
  18.  
  19.   echo -n "${ctemp}°C/${ttemp}°C"$'\r'
  20.   [[ "$debug" ]] && echo
  21.  
  22.   [[ "$debug" ]] && echo Current temperature ${ctemp}°C, target temperature ${ttemp}°C, temperature delta is ${tdiff}°C
  23.   if [[ ! "$tdiff" -gt 0 ]]; then
  24.     [[ "$debug" ]] && echo no need to heat
  25.     return 0
  26.   fi
  27.  
  28.   for ((i=0; i<$cores; i++)) {
  29.     [[ "$debug" ]] && echo "Spawning cpu hog #$((i+1))/$cores"
  30.     while :; do :; done &
  31.   }
  32.  
  33.   dur=$(( tdiff * slope ))
  34.   if [[ "$dur" -gt "$ttemp" ]]; then
  35.     dur=$ttemp
  36.   fi
  37.   [[ "$debug" ]] && echo heating for $dur seconds...
  38.   sleep $dur
  39.  
  40.   while read line; do
  41.     [[ "$debug" ]] && echo killing...
  42.     kill %$(( ++job ))
  43.   done < <(jobs -p)
  44. }
  45.  
  46. while sleep $ttemp; do
  47.   heat &
  48. done
  49.  
  50. # licensed under GPL, Daniel Albers <daniel@lbe.rs>, 20111229