继上一篇《Linux根据硬盘温度调节风扇转速第二篇》,由于这个脚本可能会唤醒休眠中的硬盘,因此需要用其他工具针对性的监控指定硬盘。

先上脚本:

#!/bin/bash
# 硬盘温度控制风扇转速脚本

# 风扇控制路径,需要根据自己的机器文件位置进行设置
FAN_PATH="/sys/devices/platform/nct6775.656/hwmon/hwmon5/pwm4"

# 高温阈值(摄氏度)
TEMP_THRESHOLD=42

# 指定要监控的硬盘
DISK_LIST=("/dev/sda" "/dev/sdb" "/dev/sdd" "/dev/sde" "/dev/sdf" "/dev/sdg")

# 检查硬盘是否活动并获取温度
for disk in "${DISK_LIST[@]}"; do
    # 检查硬盘是否存在
    if [ ! -e "$disk" ]; then
        echo "硬盘 $disk 不存在,跳过..."
        continue
    fi

    # 使用hdparm检查硬盘电源模式
    power_mode=$(hdparm -C "$disk" 2>/dev/null | grep -i 'power mode' | awk '{print $3}')

    if [ "$power_mode" != "active" ]; then
        echo "硬盘 $disk 当前状态为 $power_mode,跳过温度检测..."
        continue
    fi

    # 获取硬盘温度
    temp=$(smartctl -A "$disk" 2>/dev/null | grep -i 'temperature' | awk '{print $10}')

    # 检查是否成功获取温度
    if [[ -z "$temp" || ! "$temp" =~ ^[0-9]+$ ]]; then
        echo "无法获取硬盘 $disk 的温度,跳过..."
        continue
    fi

    echo "硬盘 $disk 温度: $temp°C"

    # 检查温度是否超过阈值
    if [ "$temp" -gt "$TEMP_THRESHOLD" ]; then
        # 高温,设置高风扇转速
        echo "硬盘 $disk 温度超过阈值 $TEMP_THRESHOLD°C,设置风扇转速为 180"
        echo 180 > "$FAN_PATH"
        exit 0  # 一旦发现高温硬盘,立即设置风扇转速并退出
    fi
done

# 如果所有硬盘温度都低于阈值,设置低风扇转速
echo "所有指定硬盘温度均低于 $TEMP_THRESHOLD°C,设置风扇转速为 0"
echo 0 > "$FAN_PATH"

一、脚本说明

  • 使用脚本前,需要设置:PWM风扇的控制文件路径、温度阈值和要监控的硬盘。
  • 脚本先使用hdparm工具检测硬盘状态,确认硬盘是active还是
最后修改:2026 年 08 月 11 日
如果觉得我的文章对你有用,请随意赞赏