HDD温度とファン
熱暴走対策ということも兼ねて、HDDの温度でファンをコントロールするようにしました。
まずはHDDの温度取得。
今回は hddtemp というソフトを利用することにします。
# apt-get install hddtemp
質問がグダグダきますが、適当にスルー。
とりあえずデーモンで起動させるように設定しておきます。
で、早速温度取得。
# hddtemp /dev/hda WARNING: Drive /dev/hda doesn't appear in the database of supported drives WARNING: But using a common value, it reports something. WARNING: Note that the temperature shown could be wrong. WARNING: See --help, --debug and --drivebase options. WARNING: And don't forget you can add your drive to hddtemp.db /dev/hda: HDT722516DLAT80: 40°C or °F
なにやらデータベースに僕が使ってるHDDが登録されてないということだそうで。
調べて探したら /etc/hddtemp.db を参照してるらしいので、最新のヤツをDL。
http://www.guzu.net/linux/hddtemp.db
コレにも載ってなかったので、行の追加。
"HDT722516DLAT80" 194 C "Hitachi Deskstar T7K250 160GB"
で、もう一度温度取得。
# hddtemp /dev/hda /dev/hda: HDT722516DLAT80: 39°C
ばっちり成功です♪
で、次にHDD温度を取得して、ファンのコントロールをするためのスクリプトを設定します。
スクリプトは、玄箱ハックの大御所「LinkStation/玄箱をハックしよう」さんの所から利用させていただきました。
http://www.yamasita.jp/linkstation/index.html
若干AVR出力先などを書き直して、以下のスクリプトに変更。
45度を境にして、高速回転or低速回転を決めます。
#!/bin/sh TEMPLIMIT=45 LOCKFILE=/tmp/HDDtemp if [ -f $LOCKFILE ] then echo $0 already running exit 1 fi TEMP=`/usr/sbin/hddtemp -n /dev/hda` date echo $TEMP C SLP=`echo $TEMP | sed -e 's/^[0-9][0-9]*$//'` if [ "$SLP" != "" ] then echo sleep exit 0 fi if [ "$TEMP" -le $TEMPLIMIT ] then /bin/echo -n '\\\\' > /dev/AVR00 exit 0 fi /bin/echo -n ']]]]' > /dev/AVR00 touch $LOCKFILE while [ 1 ] do TEMP=`/usr/sbin/hddtemp -n /dev/hda` date echo $TEMP C SLP=`echo $TEMP | sed -e 's/^[0-9][0-9]*$//'` if [ "$SLP" != "" ] then echo sleep exit 0 fi if [ "$TEMP" -le $TEMPLIMIT ] then break fi sleep 60 done /bin/echo -n '\\\\' > /dev/AVR00 rm $LOCKFILE exit 0
でシェルの実行。
# sh hddtemp.sh 2006年 6月 4日 日曜日 19:45:29 JST 41 C
動いてくれたのでOK。
このシェルスクリプトを移動。
# cp /mnt/share/hddtemp.sh /usr/sbin/
で、自動実行してもらえるように cron に登録。
# crontab -e
で登録作業。
10分間隔で動くように設定してみました。
登録した結果はこんな感じ
# crontab -l 00,10,20,30,40,50 * * * * nice /bin/sh /usr/sbin/hddtemp.sh >> /tmp/HDDtemp.log
ログファイルをチェックしてみると、ちゃんと動いてくれてたのでOK