对长期运行的服务器来说,温度是容易被忽视却影响巨大的指标。CPU温度过高时会触发降频保护,表现为系统负载不高但业务明显变慢;再严重一些,机器会直接重启或关机。本文以常见的CentOS/Debian系统为例,说明如何在Linux下读取CPU温度、风扇转速,以及发现高温后该从哪些方向排查。

lm_sensors是什么
lm_sensors是Linux下读取主板、CPU、风扇等硬件传感器数据的工具集。大多数服务器和台式机主板的传感器芯片它都能识别。注意一点:云服务器是虚拟化出来的,没有物理传感器,这类工具在云主机上通常读不到温度,更适合物理服务器和自建机房环境使用。
安装并配置lm_sensors
CentOS/RHEL系统与Debian/Ubuntu系统的安装命令不同:
# CentOS/RHEL
yum install -y lm_sensors
# Debian/Ubuntu
apt update && apt install -y lm-sensors
安装后先运行 sensors-detect 让系统探测传感器芯片,按提示一路回车即可(多数发行版会建议加载对应内核模块):
sensors-detect
# 探测完成后,加载建议的内核模块(示例)
modprobe coretemp
modprobe nct6775
如果当前会话没有自动加载模块,重启服务器后通常会自动加载。之后执行 sensors 即可看到实时温度与风扇转速:
sensors
# 只看温度相关的行
sensors | grep -i -E 'core|package|temp'
如何理解sensors的输出
输出里 Package id 0 是CPU整体温度,各 Core 是单个核心的温度;fan1、fan2 等是风扇转速(单位RPM)。一般规律是:待机时桌面级CPU在40℃上下,服务器CPU在35~55℃之间;满载时70~80℃仍在安全范围,超过90℃就需要警惕。不同型号的CPU耐温上限不同,应以厂商规格为准,不要只看某一个阈值。
CPU温度过高的常见原因与排查方向
- 散热器积灰或硅脂老化:物理机最常见的因素,清理灰尘、重涂硅脂后温度通常明显下降;
- 风扇故障或转速策略异常:对照sensors里的RPM数值,判断风扇是否停转或转速偏低;
- 机柜风道不畅或机房空调故障:关注进风与出风温差,必要时调整机柜内设备布局;
- 长期高负载运行:确认是否真有业务在持续打满CPU,而不是被挖矿程序占用;
- BIOS/固件策略问题:部分主板可设置风扇曲线与温度告警阈值,检查是否被误改。
如果是托管或租用的服务器,自己不便进机房,可以把 sensors 的温度写入监控脚本,超过阈值时通过邮件或IM告警,再联系机房处理。下面是一个简单的检查命令组合:
#!/bin/bash
# 温度超过85度时告警(示例)
TEMP=$(sensors | grep 'Package id 0' | awk '{print $4}' | tr -d '+°C')
if [ "$(echo "$TEMP > 85" | bc)" = "1" ]; then
echo "CPU temperature too high: ${TEMP}C" | mail -s "Server Overheat" admin@example.com
fi
相关问答FAQs
- 问:云服务器上sensors没有输出怎么办?答:正常现象,虚拟化环境没有物理传感器,可在云控制台查看实例的监控指标。
- 问:sensors命令找不到怎么办?答:确认软件包安装成功;部分内核需要先运行 sensors-detect 加载模块,可执行 modprobe coretemp 后重试。
- 问:温度多少度算异常?答:没有统一答案,建议对照CPU官方规格中的Tjmax值,并参考同机房同型号设备的横向对比。
温度监控应该像磁盘、内存监控一样成为服务器巡检的固定项目。提前装好lm_sensors、把温度纳入告警,多数高温故障都能在影响业务之前被发现。客观地说,工具只能帮你看到温度,真正解决问题靠的是散热维护与负载治理,两者缺一不可。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!