Linux 硬件监控快速上手:用 lm-sensors 三步拿到温度与风扇转速(免费开源)
Linux 硬件监控快速上手用 lm-sensors 三步拿到温度与风扇转速免费开源【免费下载链接】lm-sensorslm-sensors repository项目地址: https://gitcode.com/gh_mirrors/lm/lm-sensors凌晨两点告警系统弹出来机柜里那台服务器 CPU 拉满、风扇狂转你却只能看到占用率看不到温度。这正是 Linux 硬件监控工具 lm-sensors 要解决的事它通过内核驱动读取主板的温度、风扇转速和电压一条命令就能把读数摆在你面前。先跑起来从源码到第一次读数的最短路径发行版仓库里如果有包直接用包管理器装 lm-sensors 即可步骤完全一样。想用最新代码就从源码编译前提是系统里有 gcc、make、bison、flex# 克隆源码并进入目录 git clone https://gitcode.com/gh_mirrors/lm/lm-sensors cd lm-sensors # 编译并安装到系统 make all sudo make installlm-sensors 安装完成后下一步是检测。用 root 跑sudo sensors-detect它会逐个扫描 I2C 和 SMBus 总线寻找传感器芯片最后打印一份该加载的驱动模块清单。扫描到某条总线时询问是否探测一路选 yes 才能覆盖所有可能位置。拿到清单后按提示 modprobe比如 Intel CPU 就是sudo modprobe coretemp。最后运行sensors就能看到这台机器的第一组读数coretemp-isa-0000 Adapter: ISA adapter Core 0: 56.0°C (high 80.0°C) Core 1: 52.0°C in0: 1.03 V (min 0.00 V, max 1.71 V) 某行显示[err]表示该传感器读不出来别慌文末有排查方法。看懂读数chip、传感器编号和单位各是什么上面每一行输出都对应一个概念chip 行coretemp-isa-0000驱动名 总线 地址。coretemp是 Intel CPU 温度芯片的驱动isa-0000是它的挂载位置。机器上有几颗芯片就有几个这样的块。传感器编号Core 0、in0芯片上物理通道的序号。编号跟引脚走不跟含义走所以第一眼看到的in0未必是你想的那个电压。读数与上限56.0°C是当前值(high 80.0°C)是报警上限超过之后该行会打印ALARM。单位温度摄氏度、电压 V、风扇转速 RPM。sensors加-f切华氏度显示加-j输出 JSON方便写脚本取数。让它说人话用 sensors3.conf 改传感器名并套用主板配置直接按引脚编号显示名字看着费劲。sensors3.conf 配置就是用来把这些编号改写成你能看懂的名字的。主配置文件在/etc/sensors3.conf仓库 etc/ 下有一份示例可以参考而 configs/ 主板配置库已经收了华硕、技嘉、微星等厂商数百个型号的现成配置。最快的路子在配置库里找到你型号对应的文件把里面的 chip 段拷进 sensors3.conf。手写的版本也就几行的事chip coretemp-isa-0000 label temp1 CPU Core 0 # 把 temp1 的显示名改成你看得懂的 label temp2 CPU Core 1 compute in0 *0.95 # 按 0.95 的系数校正 in0 电压读数 ignore in2 # 这个电压通道用不到隐藏掉改完标签只是换了显示名不影响实际采集如果你的型号不在库里照着同样的格式自己补一个文件提回项目下一个用同款硬件的人就能直接复用。从「看」到「管」报警阈值和风扇调速的最小配置拿到读数后第一件事是报警。在 sensors3.conf 对应 chip 段里加一行set temp1_crit 85关键温度上限 85 度执行sensors -s把限值写进芯片再启动 sensord 守护进程任何传感器越限它都会记一条 ALARM 日志。想让风扇随温度自动调速跑一次sudo pwmconfig按提示走完几个问题就会生成 fancontrol.conf关键行长这样INTERVAL10 # 每 10 秒重新计算一次 DEVPATHhwmon0devices/platform/coretemp.0 DEVNAMEhwmon0coretemp FCTEMPShwmon1/pwm1hwmon0/temp1_input # 用 CPU 温度驱动这组风扇 FCFANShwmon1/pwm1hwmon1/fan1_input # 被调速的风扇 MINTEMPhwmon1/pwm120 # 20 度以下基本不转 MAXTEMPhwmon1/pwm160 # 60 度拉满逻辑就一句话每隔 INTERVAL 秒看一眼 FCTEMPS 里的温度把 FCFANS 的风速调到让温度落在 MINTEMP 与 MAXTEMP 之间。生成文件后用sudo fancontrol前台跑起来或者用 prog/init/ 里的启动脚本注册成服务开机自启。卡住了怎么办三个高频故障的检查命令现象检查命令解法sensors无输出或整块芯片[err]lsmod \| grep -E coretemp\|nct6775对应驱动没加载重跑 sensors-detect 检测并 modprobe 建议的模块sensors-detect 找不到任何传感器芯片i2cdetect -l内核没开 I2C 或 Hardware Monitoring 选项或芯片压根没有驱动换更新的内核光升级 lm-sensors 没用个别传感器显示[err]逐个rmmod驱动后重跑sensors哪个驱动卸掉后错误消失问题就出在它身上记录过程反馈给对应内核驱动的维护者接入你现有的监控体系Prometheus Grafananode_exporter 的 collector 直接读 /sys 下的 hwmon 数据和 lm-sensors 同源不用额外写脚本。Zabbix写一个 UserParameter 脚本包住sensors -j把返回的 JSON 交给 Zabbix 解析。Nagios / Icinga写个小插件grepsensors输出里的读数跟阈值比一下输出 OK 或 CRIT。收尾温度、风扇、电压都装进了一条命令里阈值报警和风扇调速也都有了最小可用的配置。详细行为可以看 doc/ 下的官方文档你的主板配置缺了就照着 configs/ 的格式补一份提回去。下一步建议让 sensord 先跑满一天拿到一轮连续数据再决定哪些阈值值得配告警。【免费下载链接】lm-sensorslm-sensors repository项目地址: https://gitcode.com/gh_mirrors/lm/lm-sensors创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考