ハードドライブの温度(Hddtemp)に応じて、ファンコントロールでファンの速度を調整します。

ハードドライブの温度(Hddtemp)に応じて、ファンコントロールでファンの速度を調整します。

Fancontrolでハードドライブの温度に応じてファンの速度を調整するには?

答え1

最後に、ハードドライブの温度に応じてファンの速度を制御する簡単なスクリプトを見つけました。ファン制御高温Lmセンサー。以下のスクリプトでは、/dev/sda「監視するハードドライブですか?」/fancontrol/Hddtemp”はFancontrol Pressから読み取った出力ファイルです。Ctrl + Alt + T端末を開き、次のコマンドを実行して「/dev/sdaそうです:

sudo hddtemp /dev/sd[az]

「SMARTは利用できません」の代わりに、温度を表示するHddtempでサポートされている温度のみを使用してください。
変える」/dev/sda必要に応じて、スクリプトで正しい内容を使用してください。
Fancontrol を設定していない場合は参照してください。このページこのページこのページ次に、次のコマンドを1つずつ実行します(最初のコマンドを実行した後、Linuxを再起動します)。

sudo センサー検出
時計センサー
sudo pwmconfig
sudo サービス fancontrol 開始

次に、次のプロセスを実行します。
(1) 次のコマンドを実行してスクリプトファイルを生成します。

sudo mkdir -p "/Fancontrol/" & sudo xed /Fancontrol/HDD_temp

(2) 以下のスクリプトをファイルにコピーして保存します。

#!/bin/bash
File=/Fancontrol/Hddtemp
while true
do 
temperature=$(sudo hddtemp -n /dev/sda)
echo $(($temperature * 1000)) > "$File"
sleep 30 
done

(3) 次のコマンドを実行して実行可能にします。

sudo chmod +x /Fancontrol/HDD_temp

(4) 次のコマンドを実行してサービスファイルを生成します。

sudo xed /lib/systemd/system/HDD_temp.service

(5) 次の行をファイルにコピーして保存します。

[サービス]
ExecStart=/Fancontrol/HDD_temp

[インストール]
WantedBy=multi-user.target

(6) 次のコマンドを 1 つずつ実行します。

sudo chmod 664 /lib/systemd/system/HDD_temp.service
sudo systemctl デーモンの再ロード
sudo systemctl start HDD_temp.service
sudo systemctl を有効にする HDD_temp.service

それからスクリプト」ハードドライブ温度Linux の起動時にシステムサービスとして実行されます。

(7) 次のコマンドを実行して編集します。ファン制御"、設定ファイル。

sudo 修正 /etc/fancontrol

「で始まる行を探す風力温度制御システム".例えば:

FCTEMPS=hwmon1/pwm1=hwmon1/temp1_input

その行には「hwmon1/temp1_input「は、Fancontrolが現在読んでいる温度です(例:チップセット温度)。」に置き換えます。/fancontrol/Hddtemp」、行は次のようになります。

FCTEMPS=hwmon1/pwm1=/fancontrol/Hddtemp

ファイルを保存し、次のコマンドを実行してFancontrolを再起動します。

sudo サービスファン制御の再起動

それからファンは「hwmon1/pwm1「答える」/fancontrol/Hddtempハードディスクの温度です。「HDD_temp」と「Hddtemp」はそれぞれスクリプトファイルと出力ファイルなので、混同しないでください。

答え2

Mathew Waiの答えは非常に優れていることがわかりましたが、ドライブの節電と温度データの破損に関連するいくつかの問題が発生しました。これは私にとって安定しています。

FILE=/tmp/Hddtemp
while true
do
    temperature=$(hddtemp -n /dev/sdc 2>/dev/null)
    # Set base temp if we got nothing in stdout, this mean we are asleep
    if [ "$temperature" == "" ]; then temperature=30; fi
    # Get a tempfile to write out temp
    NEW=$(mktemp /tmp/Hddtemp.XXXX)
    echo $(($temperature * 1000)) > $NEW
    # Handle case of initial/clean run
    if [ -e $FILE ]; then
        CLEAN="rm -f $(readlink -f $FILE)"
    fi
    # Atomic symlink replacement
    ln -s $NEW $FILE.lnk
    mv -T $FILE.lnk $FILE
    # Clean old link, if it existed
    $CLEAN
    sleep 30
done

hddtempが発生していることを考えると去る次のバージョンのDebianでは、センサーで読み取れる「drivetemp」を使用するように変更し、次のものを置き換えます。

    temperature=$(hddtemp -n /dev/sdc 2>/dev/null)

そして

    temperature=$(sensors -A drivetemp-scsi-5-0|grep temp1|tr -s ' '|cut -d '+' -f 2|cut -d '.' -f1;)

私はこの新しいセンサーアプローチがかなり長い間安定していることがわかりました。

関連情報