linux 如何查看cpu温度
- Linux
- 2025-08-13
- 1
sensors
命令(需先装
lm-sensors
包),或读
/sys/class/thermal/
下
在Linux系统中查看CPU温度是系统运维、性能优化及故障排查的重要环节,由于Linux发行版众多且硬件架构差异较大,本文将围绕主流方案展开详细说明,涵盖命令行工具、内核接口、第三方软件等多种实现方式,并提供完整操作示例与注意事项,以下是具体实施步骤及技术解析:
核心原理与前置条件
CPU温度数据通常通过以下途径获取:
- 硬件监测芯片:现代主板集成IT87系列、ACPI等温控芯片,通过I²C总线与CPU通信;
- 操作系统接口:Linux内核通过
coretemp
、acpi_thermal
等驱动模块暴露温度数据; - 厂商专用接口:部分笔记本/服务器提供OEM定制接口(如Dell iDRAC)。
必要准备
项目 | 说明 |
---|---|
权限要求 | 普通用户可读取基础数据,修改配置需sudo |
依赖组件 | lm-sensors 套件(多数发行版默认未安装)、内核模块 |
适用场景 | 物理机/虚拟机均可(虚拟机需宿主机支持虚拟化测温) |
典型误差范围 | ±2℃(受BIOS设置、散热条件影响) |
主流查看方法详解
方法1:通过sensors
命令(推荐)
此为最通用方案,基于lm-sensors
项目实现。
步骤1:安装依赖
# Debian/Ubuntu系 sudo apt update && sudo apt install lm-sensors -y # RHEL/CentOS系 sudo yum install epel-release && sudo yum install lm_sensors -y
步骤2:检测探头并生成配置文件
sudo sensors-detect --auto # 根据提示选择YES确认自动检测(默认会跳过非必要设备)
该命令会在/etc/sensors.conf
生成适配当前硬件的配置。
步骤3:查看实时温度
sensors | grep 'Package id' # 显示封装级温度(最接近实际CPU温度) # 示例输出:Coretemp-isa-0000: Package id 0: +52.5°C (high = +95.0°C, crit = +105.0°C)
关键字段解析:
Package id
: CPU插槽整体温度(含缓存)Core
: 各核心独立温度Physical id
: 多路CPU时的编号区分high/crit
: 警告/危险阈值
进阶用法:定时监控+告警
watch -n 1 "sensors | grep 'Package id'" # 每秒刷新一次
方法2:直接读取内核接口
适用于未安装lm-sensors
或需快速验证的场景。
路径定位:
ls /sys/class/thermal/thermal_zone/temp # 常见路径示例:/sys/class/thermal/thermal_zone0/temp
读取原始数据:
cat /sys/class/thermal/thermal_zone0/temp # 输出示例:52350(单位:毫摄氏度,即52.35℃)
转换为易读格式:
echo $(($(cat /sys/class/thermal/thermal_zone0/temp)/1000))°C # 或使用awk格式化:awk '{print int($1/1000),"°C"}' /sys/class/thermal/thermal_zone0/temp
注意事项:
- 不同厂商路径可能不同(如Intel平台可能在
intel_power/runtime_power_limit
) - 数值未经校准,建议优先使用方法1
方法3:使用hwinfo
工具
提供更详细的硬件信息汇总。
安装与使用:
# Ubuntu/Debian sudo apt install hwinfo hwinfo --sensors # 显示所有传感器数据 # 过滤CPU相关项:hwinfo --sensors | grep -i "cpu|core"
方法4:图形化工具(可选)
适合桌面用户进行可视化监控:
| 工具名称 | 特点 | 安装命令 |
|—————-|—————————————|——————————|
| PSensor | 轻量级GUI,支持多语言 | sudo apt install psensor
|
| Conky | 可定制桌面面板显示 | sudo apt install conky-all
|
| GKrellM | 专业级监控仪表盘 | sudo snap install gkrellm
|
不同发行版特殊处理
发行版 | 注意事项 | 解决方案 |
---|---|---|
Fedora | SELinux限制访问/dev/mem | 临时关闭SELinux:sudo setenforce 0 |
Arch Linux | AUR仓库提供增强版lm_sensors | yay -S lm_sensors |
OpenSUSE | 默认启用YaST硬件检测 | 通过YaST > Hardware Information查看 |
WSL(Windows) | 不支持原生测温 | 改用Windows资源监视器 |
常见问题排查
️ 现象1:sensors
命令无输出或报错
原因分析:
- 未正确执行
sensors-detect
导致驱动未加载; - 老旧硬件不被
lm-sensors
支持; - 安全启动(Secure Boot)阻止模块加载。
解决方案:
# 手动加载模块 sudo modprobe coretemp sudo modprobe acpi_thermal # 重新运行检测向导 sudo sensors-detect --auto --yes
️ 现象2:温度异常偏高(>90℃)
可能原因:
- 硅脂老化导致导热不良;
- 散热器积灰堵塞风道;
- BIOS中PL1/PL2功耗墙设置过低;
- 干扰/挖矿程序占用资源。
诊断步骤:
- 进入BIOS查看空闲时基础温度;
- 使用
top
/htop
检查异常进程; - 单线程压力测试验证满载温度:
stress -c 1 --timeout 60
。
扩展应用示例
自动化温控脚本
#!/bin/bash MAX_TEMP=85 # 设定最高允许温度 CURRENT=$(sensors | grep 'Package id' | awk '{print $3}' | cut -d'+' -f2) if [ "$(echo "$CURRENT > $MAX_TEMP" | bc)" -eq 1 ]; then echo "高温警告!当前温度:${CURRENT}℃" >> /var/log/temp_alert.log # 此处可添加降频/关机等操作 fi
温度日志分析(配合Grafana)
- 安装Collectd+Python插件收集数据;
- 配置数据源指向
/sys/class/thermal/.../temp
; - 创建折线图展示24小时温度波动趋势。
相关问答FAQs
Q1: 如果sensors
命令显示”No data available”怎么办?
A: 这是最常见的兼容性问题,按以下顺序排查:
- 确保已执行
sudo sensors-detect --auto
并重启; - 尝试指定特定芯片组:
sudo sensors-detect --chipset auto
; - 检查dmesg日志是否有错误:
dmesg | grep -i sensor
; - 对于AMD EPYC服务器,需额外安装
amd64-microcode
固件包。
Q2: 为什么同一台机器不同工具显示的温度不一致?
A: 主要原因包括:
| 差异来源 | 具体表现 | 处理方法 |
|—————-|———————————–|—————————|
| 测量位置不同 | 封装级(Package) vs 核心级(Core) | 根据需求选择对应指标 |
| 采样频率差异 | 瞬时值 vs 平均值 | 统一使用相同时间间隔采样 |
| 单位转换误差 | 摄氏/华氏混淆 | 确认单位制式 |
| 虚拟化干扰 | KVM虚拟机可能返回宿主机温度 | 在宿主机直接测量更准确 |
| BIOS限制 | 部分主板人为降低报告温度 | 进入BIOS禁用节能模式