根据硬盘温度(Hddtemp)通过Fancontrol调整风扇速度

根据硬盘温度(Hddtemp)通过Fancontrol调整风扇速度

如何通过 Fancontrol 根据硬盘温度调整风扇速度?

答案1

我终于找到了一个简单的脚本来根据硬盘温度控制风扇速度风扇控制,高温, 和Lm传感器。在下面的脚本中,“/dev/sda” 是要监控的硬盘,“/风扇控制/Hddtemp” 是 Fancontrol 读取的输出文件。按Ctrl + Alt + T打开终端并运行以下命令来检查是否“/dev/sda” 是正确的:

sudo hddtemp /dev/sd[az]

仅使用 Hddtemp 支持的温度,它将显示温度而不是“SMART not available”。
代替 ”/dev/sda” 如有必要,请在脚本中使用正确的内容。
如果您尚未配置 Fancontrol,请参阅这一页,这一页, 和这一页并逐条运行以下命令(运行第一个命令后重新启动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)一一运行以下命令:

sudo chmod 664 /lib/systemd/system/HDD_temp.service
sudo systemctl 守护进程重新加载
sudo systemctl 启动 HDD_temp.service
sudo systemctl 启用 HDD_temp.service

然后,脚本“硬盘温度” 将在 Linux 启动时作为系统服务运行。

(7) 运行以下命令编辑“风扇控制”,配置文件。

须藤固定/etc/fancontrol

找到以“开头的行风电温度控制系统”。例如:

FCTEMPS=hwmon1/pwm1=hwmon1/temp1_input

在那一行,“hwmon1/temp1_input” 是 Fancontrol 当前读取的温度(例如芯片组温度)。将其替换为“/风扇控制/Hddtemp”,该行将变为:

FCTEMPS=hwmon1/pwm1=/风扇控制/Hddtemp

保存文件并运行以下命令重新启动 Fancontrol。

sudo 服务 fancontrol 重新启动

然后,风扇由“hwmon1/pwm1” 将回应“/风扇控制/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;)

我发现这种新的传感器方法稳定了相当长一段时间。

相关内容