Linux系统温度监控完全指南

一、系统环境信息

操作系统版本

通过 uname -a 命令查看系统内核版本:

uname -a

输出示例:

Linux debian 6.12.96+deb13-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.96-1 (2026-07-20) x86_64 GNU/Linux

重要说明

uname -a 仅显示系统内核版本等静态信息,不包含温度数据。查看温度需要使用专门的工具或读取系统文件。


二、CPU温度查看方法

方法一:使用 lm-sensors 工具

这是最常用且信息最全面的方法。

1. 安装 lm-sensors

sudo apt update
sudo apt install lm-sensors

2. 检测并配置传感器

运行检测脚本,整个过程按 Enter 键选择默认的 YES 选项:

sudo sensors-detect

3. 查看温度

sensors

输出示例:

coretemp-isa-0000
Package id 0:  +45.0°C  (high = +80.0°C, crit = +100.0°C)
Core 0:        +42.0°C  (high = +80.0°C, crit = +100.0°C)
Core 1:        +43.5°C  (high = +80.0°C, crit = +100.0°C)

持续监控

每秒刷新一次温度数据:

watch -n 1 sensors

方法二:读取系统文件 /sys/class/thermal/

这是无需安装软件的方法,但信息相对有限。

1. 基础读取

读取温度文件,输出单位为毫摄氏度(milli-Celsius),需要除以1000:

cat /sys/class/thermal/thermal_zone0/temp

输出示例:45000 表示 45.0°C

2. 转换为摄氏度

awk '{printf "%.2f°C\n", $1/1000}' /sys/class/thermal/thermal_zone0/temp

3. 查看所有热区类型

cat /sys/class/thermal/thermal_zone*/type

输出示例:

acpitz
acpitz
x86_pkg_temp

三、thermal_zone 文件详解

文件更新机制

/sys/class/thermal/thermal_zone*/temp 文件具有以下特性:

  • 瞬时采样:每次读取时内核从硬件传感器获取当前实时值
  • 不累加:显示的是当前时刻的温度快照,而非历史累计值
  • 按需读取:文件不会主动刷新,仅在用户程序调用读取指令时才查询硬件
  • 存在缓存机制:极短时间内多次读取可能返回缓存的旧值,以避免频繁访问硬件带来的性能开销

验证示例

for i in {1..5}; do cat /sys/class/thermal/thermal_zone0/temp; sleep 1; done

thermal_zone 类型说明

类型含义监控对象
acpitzACPI Thermal Zone主板/机箱环境温度
x86_pkg_tempx86 Package TemperatureCPU封装温度(芯片整体温度)
pch_skylakePCH Temperature南桥芯片温度
INT3400Intel Dynamic TuningIntel动态调优热区

thermal_zone 目录下其他重要文件

文件说明
temp当前温度(毫摄氏度)
type热区类型标识
trip_point_*_temp温度触发点阈值(毫摄氏度)
trip_point_*_type触发点动作类型(passive/active/critical)
policy当前温控策略
mode温控模式(enabled/disabled)
available_policies支持的温控策略列表
cdev[0-9]*关联的冷却设备符号链接

查看温度触发点

# 查看第一个触发点的温度和动作类型
cat /sys/class/thermal/thermal_zone0/trip_point_0_temp
cat /sys/class/thermal/thermal_zone0/trip_point_0_type

触发点类型说明:

  • passive:被动散热(降低CPU频率)
  • active:主动散热(开启风扇)
  • critical:临界温度(系统关机或重启)

查看温控策略和模式

cat /sys/class/thermal/thermal_zone0/policy
cat /sys/class/thermal/thermal_zone0/mode

四、实用命令组合

查看特定热区温度(针对 x86_pkg_temp)

awk '{printf "%.2f°C\n", $1/1000}' /sys/class/thermal/thermal_zone2/temp

自动查找 x86_pkg_temp 类型并显示温度

for i in /sys/class/thermal/thermal_zone*/type; do 
    if grep -q x86_pkg_temp "$i"; then
        zone=$(dirname "$i")
        awk '{printf "CPU温度: %.2f°C\n", $1/1000}' "$zone/temp"
    fi
done

查看所有存在的 thermal_zone(0、1、2)

只显示存在的,不存在的自动跳过:

for i in 0 1 2; do [ -f "/sys/class/thermal/thermal_zone$i/temp" ] && echo -n "zone$i - $(cat /sys/class/thermal/thermal_zone$i/type) - " && awk '{printf "%.2f°C\n", $1/1000}' "/sys/class/thermal/thermal_zone$i/temp"; done

一次性查看所有热区信息

for i in /sys/class/thermal/thermal_zone*; do
    type=$(cat "$i/type")
    temp=$(awk '{printf "%.2f°C", $1/1000}' "$i/temp")
    echo "$(basename $i) - $type - $temp"
done

仅显示 CPU 温度(自动匹配 x86_pkg_temp)

for i in 0 1 2; do [ -f "/sys/class/thermal/thermal_zone$i/temp" ] && [ "$(cat /sys/class/thermal/thermal_zone$i/type)" = "x86_pkg_temp" ] && awk '{printf "CPU: %.2f°C\n", $1/1000}' "/sys/class/thermal/thermal_zone$i/temp"; done

五、CPU负载查看

查看系统负载和CPU使用率

top -bn1 | head -5

输出字段说明:

  • load average:系统平均负载(1分钟、5分钟、15分钟)
  • %Cpu(s)

    • us:用户空间占用CPU百分比
    • sy:内核空间占用CPU百分比
    • id:CPU空闲率
    • wa:等待I/O完成的时间

查看平均负载

uptime

六、温度判断标准

空闲状态下的温度参考

温度区间状态判断
30-50°C很凉快,被动散热足够
50-65°C正常负载下的典型温度,非常安全
65-80°C偏高但仍在安全范围,可考虑主动散热
80°C以上需要主动散热(风扇)
90°C以上危险区,可能降频或关机

满载状态下的温度参考

满载最高温度结论
低于70°C散热片完全够用,不需要风扇
70-80°C勉强够用,可考虑加风扇但不是必须
80-85°C建议加风扇
85°C以上必须加风扇,否则长期使用可能降频或损坏

风扇温控典型逻辑

CPU温度区间风扇状态
低于35-40°C停止或最低转速运行
40-60°C 或 50-70°C转速随温度升高而提升
70-80°C中高转速运行
90°C及以上全速运转

七、散热片效能测试(压力测试)

安装压力测试工具

sudo apt update && sudo apt install stress -y

执行压力测试并监控温度

方案一:后台运行压力测试,前台监控

stress --cpu 4 --timeout 120 &
watch -n 1 'cat /sys/class/thermal/thermal_zone2/temp 2>/dev/null | awk "{printf \"%.2f°C\n\", \$1/1000}"'

方案二:一行命令完成测试和采样

stress --cpu 4 --timeout 120 & sleep 2; for i in {1..20}; do clear; echo "=== 第 $i 次采样 ==="; cat /sys/class/thermal/thermal_zone*/temp 2>/dev/null | awk '{printf "%.2f°C\n", $1/1000}'; sleep 3; done

方案三:使用 watch 持续监控

watch -n 1 'cat /sys/class/thermal/thermal_zone2/temp | awk "{printf \"%.2f°C\n\", \$1/1000}"'

压力测试注意事项

  • 根据系统CPU核心数调整 -c 参数(示例中为4核)
  • 建议测试至少2-5分钟,观察温度是否趋于稳定
  • 如果温度持续上升无稳定趋势,应立即停止测试

八、实际案例分析

案例环境

  • 系统:Debian Linux
  • 内核:6.12.96+deb13-amd64
  • 硬件:工程版开发板/工控板
  • 散热方案:仅安装散热片(被动散热),无风扇

热区类型查询结果

cat /sys/class/thermal/thermal_zone*/type

输出:

acpitz
acpitz
x86_pkg_temp

对应关系:

  • thermal_zone0:acpitz(主板/机箱环境温度)
  • thermal_zone1:acpitz(主板/芯片组/供电区域温度)
  • thermal_zone2:x86_pkg_temp(CPU封装温度)

结论:CPU温度应查看 thermal_zone2

系统负载状态

top -bn1 | head -5

输出:

top - 01:57:36 up 60 days,  8:48,  1 user,  load average: 0.19, 0.10, 0.09
Tasks: 136 total,   2 running, 134 sleeping,   0 stopped,   0 zombie
%Cpu(s):  3.5 us,  5.8 sy,  0.0 ni, 90.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

分析:

  • CPU空闲率 90.7%
  • 系统负载极低(load average: 0.19)
  • 当前为轻负载状态

当前温度

当前温度 56°C(空闲状态)。

结论

  • 56°C 在空闲状态下属于正常且安全的温度
  • 但空闲状态下的温度不能说明散热片的真实能力
  • 需要通过压力测试验证满载时的温度表现

九、硬件温度传感器补充说明

除了CPU温度,系统还能监测以下部件的温度:

部件说明
主板及芯片组南桥/北桥芯片温度
显卡(GPU)独立显卡核心温度
硬盘(HDD/SSD)可通过 hddtemp 或 smartctl 读取
内存(RAM)部分高性能内存条(需加载 jc42 内核模块)
风扇转速显示风扇转速(RPM)

查看其他部件温度的工具

  • hddtemp:查看硬盘温度
  • smartctl:查看硬盘S.M.A.R.T.信息(含温度)
  • psensor:图形化监控工具,可显示CPU、GPU、硬盘等温度

十、工程板被动散热判断流程

  1. 确认当前负载状态(使用 top 或 uptime)
  2. 如果空闲温度正常(如 56°C),执行压力测试
  3. 观察满载时温度最高值
  4. 根据满载温度判断是否需要加装风扇:

    • 低于70°C:无需风扇
    • 70-80°C:可考虑加装
    • 80°C以上:建议加装
    • 85°C以上:必须加装
  5. 同时考虑散热片物理大小作为辅助判断依据

标签: none

添加新评论