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
我终于找到了一个简单的脚本,通过Fancontrol、Hddtemp和Lm-sensors根据硬盘温度控制风扇速度。在下面的脚本中,“ /dev/sda ”是要监控的硬盘,“ /Fancontrol/Hddtemp ”是Fancontrol要读取的输出文件。按Ctrl + Alt + T打开终端并运行以下命令以检查“ /dev/sda ”是否正确:
仅使用 Hddtemp 支持的那个,它将显示温度而不是“SMART not available”。如有必要,
将“ /dev/sda ”替换为脚本中的正确选项。
如果你还没有配置Fancontrol,看这个页面,这个页面,这个页面,依次运行以下命令(运行第一个后重启Linux):
然后,执行以下过程:
(1) 运行以下命令创建脚本文件。
(2) 将以下脚本复制到文件中并保存。
(3) 运行以下命令使其可执行。
(4) 运行以下命令创建服务文件。
(5) 将以下行复制到文件中并保存。
(6)一一运行以下命令:
然后,脚本“ HDD_temp ”将在 Linux 启动时作为系统服务运行。
(7) 运行以下命令编辑配置文件“ fancontrol ”。
找到以“ FCTEMPS ”开头的行。例如:
在那一行,“ hwmon1/temp1_input ”是Fancontrol 当前读取的温度(例如芯片组温度)。将其替换为“ /Fancontrol/Hddtemp ”,该行将变为:
保存文件并运行以下命令重新启动 Fancontrol。
然后,由“ hwmon1/pwm1 ”控制的风扇将响应“ /Fancontrol/Hddtemp ”,即硬盘温度。请注意,“HDD_temp”和“Hddtemp”分别是脚本文件和输出文件。不要混淆他们。
我发现 Mathew Wai 的回答非常好,但我遇到了一些驱动器睡眠和温度数据损坏的问题。这对我来说很稳定:
鉴于 hddtemp 将在下一个 Debian 版本中消失,我已将我的更改为使用“drivetemp”,它可以从传感器读取,因此我将替换:
和
我刚刚开始使用这种传感器方法,所以我不能肯定它是稳定的。