today_rainy's blog

ガジェットやらプログラムやらを地道に弄くる。

cronでCPU温度を淡々と呟く

最近日差しが強くなってきて、raspiさんも稼働状況が気になるところです。
本格化する前にCPU温度がどう変化するのか把握しておきたい。
ひとまずCPU温度を吐かせるには、下のようにすれば良い様子。

cat /sys/class/thermal/thermal_zone0/temp | awk '{printf("CPU温度 %.1f\n", ($1=$1 / 1000))}'

おっさんはawkの素晴らしさを知った。d.hatena.ne.jp

あとは淡々とcronを動かしてやればいい。cronを編集するコマンドで、

crontab -e

から編集画面を開き、最下部に毎時0分にCPU温度を呟くようにセット。

#min hr day month dow command 
0 * * * * cat /sys/class/thermal/thermal_zone0/temp | awk '{printf("%.1f\n", ($1=$1 / 1000))}' | tw --pipe

、、、するもまったく動かない。うんともすんとも動かない。
色々調べて分かったこと。


①rasbianでのcronログは /var/log/syslog (通常は/var/log/cronの模様)
②コマンドはcronがどこで動いてもいいようにフルパスで指定
(コマンドのフルパスはwhereis catのように捜索)
③ログは出ているが(No MTA installed, discarding output)と言われて何か怒ってる
 → Warningをメールで通知してくれる機能だがメーラーがないと言ってる。本質ではない。
 (本質ではないが、sudo apt-get install postfixメーラーを入れてそのエラーは回避)
④「You have new mail」地獄。エラー結果をメールでお知らせ。cat /var/mail/pi。構文エラーらしい。訂正訂正。
⑤cron設定では%はエスケープさせないとダメらしい。%→\%。知らんがな。http://maruta.be/intfloat_staff/67


ひとまず条件も何もなしに毎時0分にCPU温度を当面呟きます。


(追記 2015/05/03) ログはローカルに。50℃異常の高温時のみ呟くように変更。

#!/bin/sh

str_date=`date +"%Y %m %d %p %I %M %S" | awk '{printf($0)}'`
str_temp=`cat /sys/class/thermal/thermal_zone0/temp | awk '{printf("%.1f\n", ($1=$1 / 1000))}'`

echo "$str_date $str_temp" >> /home/pi/cpuTemp.log

str_temp2=`cat /sys/class/thermal/thermal_zone0/temp | awk '{printf("%d\n", ($1=$1 / 1000))}'`
if [ $str_temp2 -gt 50 ]
then
        tw --yes "[bot] raspi CPU温度上昇 $str_temp" 1> /dev/null
fi


ほとんど何もしてなくて43℃は高いよなぁ、、、
この人みたいにミニファン&放熱フィンを付けるのも手だな。。。ukki.hateblo.jp