飞牛OS在CoolerControl中添加SAS硬盘温度实现风扇与硬盘温度联动

2025-07-19 21:24:33 1点赞 5收藏 3评论
飞牛OS在CoolerControl中添加SAS硬盘温度实现风扇与硬盘温度联动

看了大佬的文章有所启发,大佬提到无法检测到直通卡连接硬盘的温度,正好我使用的是sas硬盘,想利用smartctl工具将sas硬盘的数据提供给CoolerControl来实现。本人不懂编程,内容主要借助deepseek完成。ssh软件是Finalshell。

飞牛OS在CoolerControl中添加SAS硬盘温度实现风扇与硬盘温度联动

下面开始正文吧。

一、CoolerControl环境安装,参考大佬链接。

二、安装smartctl

sudo apt update

sudo apt install smartmontools jq lm-sensors # smartmontools 包含 smartctl, jq 用于解析 JSON (可选), lm-sensors 用于检查 hwmon

三、确定温度数据来源

①确定 SAS 硬盘设备路径

SAS 硬盘通常使用 /dev/sgX (SCSI Generic) 或 /dev/bsg/* (Block SCSI Generic) 设备节点。/dev/sdX 节点可能无法用于 smartctl 的 SAS 查询。

使用以下命令查找你的 SAS 硬盘:

sudo smartctl –scan

飞牛OS在CoolerControl中添加SAS硬盘温度实现风扇与硬盘温度联动

sudo smartctl --scan-open

飞牛OS在CoolerControl中添加SAS硬盘温度实现风扇与硬盘温度联动

ls /dev/sg* # 查看 SCSI Generic 设备

ls /dev/bsg/ # 查看 Block SCSI Generic 设备

找到你的目标 SAS 硬盘对应的设备,例如 /dev/sg2 或 /dev/bsg/6:0:0:0。记录下这个路径。

②测试 smartctl 读取 SAS 温度

使用 smartctl 的 -A (所有属性) 或 -d sat / -d scsi 等参数尝试读取。对于 SAS,-d scsi 通常是需要的:

sudo smartctl -a -d scsi /dev/sg0 # “sg0”替换为你的设备

飞牛OS在CoolerControl中添加SAS硬盘温度实现风扇与硬盘温度联动

在输出信息中搜索温度值。关键词通常是 Temperature 或 Current Drive Temperature(我显示的是Current Drive Temperature)。注意: SAS 温度的单位通常是 Celsius,并且值可能直接是摄氏度数值(如 40),或者是以 40 (Min/Max ...) 这样的形式出现。找到确切的温度数值行及其格式非常重要。

我的输出是“Current Drive Temperature”,目前我们知道了温度数字的来源了。

利用下面的代码测试一下是不是能把温度数字提取出来,多试后续脚本用的就是这个数据。

sudo smartctl -A -d scsi /dev/sg0 | grep -i "Current Drive Temperature" | awk '{print $4}'

其中grep -i "Current Drive Temperature”":查找包含 "Temperature" 的行(不区分大小写)。

awk '{print $4}':打印该行的第4个字段(空格分隔)。你需要根据你的 smartctl -A 实际输出调整 $4 这个列号! 观察输出,确定温度数值所在的列位置。

输出41和上一个代码的中反馈的温度信息对应,证明代码没问题。输出41和上一个代码的中反馈的温度信息对应,证明代码没问题。

三、创建文件给CoolerControl作为温度数据来源

CoolerControl 支持从文件读取温度数据,这是更简单且更安全的方法。

①创建温度数据文件

sudo mkdir -p /var/run/sensors/

sudo touch /var/run/sensors/sas_hdd0_temp

sudo chmod 666 /var/run/sensors/sas_hdd0_temp # 确保所有用户可读写

飞牛OS在CoolerControl中添加SAS硬盘温度实现风扇与硬盘温度联动

其中“sas_hdd_temp”为温度文件,多个sas硬盘可以创建多个“sas_hddX_temp”,一个文件对应一个自定义传感器

②编写更新脚本

创建sudo nano /usr/local/bin/update_sas_temp.sh,脚本代码如下:

#!/bin/bash

# SAS 硬盘设备路径 (根据您的实际设备修改,和前面第三节有关)

SAS_DEVICE="/dev/sg0"

# 温度数据文件(和上一步创建的温度数据文件有关)

TEMP_FILE="/var/run/sensors/sas_hdd0_temp"

# 获取温度值(摄氏度)-和第三节②测试的内容一致"Current Drive Temperature"和print $4按测试成功的数据调整。

TEMP_C=$(sudo smartctl -A -d scsi "$SAS_DEVICE" | grep -i "Current Drive Temperature" | awk '{print $4}')

# 检查是否成功获取温度

# 将温度值转换为毫摄氏度(在数值后加三个零,因为CoolerControl识别的毫摄氏度)

TEMP_MILLIC="${TEMP_C}000"

# 将温度值写入文件(单位:摄氏度)

echo "$TEMP_MILLIC" > "$TEMP_FILE"

else

echo "无法读取 SAS 硬盘温度" >&2

fi

飞牛OS在CoolerControl中添加SAS硬盘温度实现风扇与硬盘温度联动

ctrl+x再输入yes保存再按回车返回上一层

给脚本执行权限

sudo chmod +x /usr/local/bin/update_sas_temp.sh

飞牛OS在CoolerControl中添加SAS硬盘温度实现风扇与硬盘温度联动

可以运行下面代码,看脚本有没有错误

sudo /usr/local/bin/update_sas_temp.sh

有条件的可以看一下/var/run/sensors/sas_hdd0_temp有没有生成数据,输出41000也就是41度。

飞牛OS在CoolerControl中添加SAS硬盘温度实现风扇与硬盘温度联动

③设置定时任务

编辑 root 的 cron 任务

sudo crontab -e

添加以下内容(每分钟更新一次)

* * * * * /usr/local/bin/update_sas_temp.sh

飞牛OS在CoolerControl中添加SAS硬盘温度实现风扇与硬盘温度联动

四、配置 CoolerControl

打开 CoolerControl

转到左边栏“+” > 自定义传感器

飞牛OS在CoolerControl中添加SAS硬盘温度实现风扇与硬盘温度联动

点击"自定义传感器"

选择类型为"文件"

飞牛OS在CoolerControl中添加SAS硬盘温度实现风扇与硬盘温度联动

配置参数:

文件路径:/var/run/sensors/sas_hdd0_temp

传感器名称:SAS HDD Temperature

保存配置

最终效果最终效果

五、总结

有多个硬盘就根据上述步骤创建多个温度来源文件添加在多个CoolerControl添加多个自定义传感器。

风扇与硬盘联动请参考大佬的文章,图形化的截面还是挺直观地。

最后说一下deepseek真强,让小白也可以尝试,还有许多不足请大神指教,大家也可以自己尝试一下,配置过程中有问题也可以问一下deepseek。

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
3评论

  • 精彩
  • 最新
  • 昨天碰到了cooler control不能找到温度临时文件的问题,原因是docker构建的时候临时文件路径没加到配置中去 [锁眉] [锁眉] [锁眉]

    校验提示文案

    提交
    有个问题,每次重启后,都要添加临时文件的文件夹。

    校验提示文案

    提交
    收起所有回复
  • mark下

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章

西西徐徐

Ta还没有介绍自己

关注 打赏
最新文章 热门文章
5
扫一下,分享更方便,购买更轻松