需使用sensors命令(依赖lm-sensors)、/sys/class/hwmon、/sys/class/thermal、s-tui或watch等方法读取cpu各核心实时温度,其中sensors最推荐,可直接显示core 0/1等独立温度及阈值。

如果您在Linux系统中需要确认CPU各核心当前运行温度,以判断是否存在过热风险或散热异常,则需借助内核暴露的传感器接口或专用监控工具。以下是解决此问题的步骤:
一、使用 sensors 命令读取核心温度(推荐)
该方法依赖 lm-sensors 工具,能直接解析主板与CPU芯片内置的数字传感器,输出各核心(Core 0、Core 1等)及封装(Package)的实时温度,并附带高温(high)与临界(crit)阈值,便于快速识别风险。
1、根据发行版安装 lm-sensors:
Debian/Ubuntu 系统执行:sudo apt-get install lm-sensors -y
CentOS/RHEL 7/8 执行:sudo yum install lm_sensors -y
CentOS/RHEL 9 或 Fedora 执行:sudo dnf install lm_sensors -y
2、运行自动探测脚本并接受全部默认选项:sudo sensors-detect
3、加载内核模块后,执行命令查看实时温度:sensors
4、识别关键字段:输出中 Package id 0 表示CPU整体封装温度,Core 0、Core 1 等即为各物理/逻辑核心独立温度值。
二、从 /sys/class/hwmon 直接读取核心温度原始值
该路径提供无需额外软件的底层访问方式,所有温度以毫摄氏度(m°C)存储于 temp*_input 文件中,适用于脚本调用或嵌入式环境,可精准定位到特定核心传感器节点。
1、列出所有硬件监控设备目录:ls /sys/class/hwmon/
2、依次检查各 hwmon 目录下的传感器名称与温度值:for dir in /sys/class/hwmon/hwmon*; do echo "$dir:"; cat "$dir/name" 2>/dev/null; cat "$dir/temp*_input" 2>/dev/null | awk '{printf "%.1f°C\n", $1/1000}'; done
3、若需单独获取某核心温度,先定位含 coretemp 的目录(如 /sys/class/hwmon/hwmon2/),再读取其 temp2_input(对应 Core 1)、temp3_input(对应 Core 2)等文件。
三、通过 /sys/class/thermal 获取语义化核心温度节点
thermal 子系统将温度按功能区域组织,其中部分 thermal_zone* 目录明确标注为 CPU 核心相关(如 cpu-thermal 或 x86_pkg_temp),其 temp 文件同样以毫摄氏度为单位,支持快速筛选与映射。
1、列出所有 thermal 区域:ls /sys/class/thermal/
2、查看某 thermal_zone 的类型与当前温度:cat /sys/class/thermal/thermal_zone*/type /sys/class/thermal/thermal_zone*/temp 2>/dev/null | paste -d': ' - - | awk -F': ' '{printf "%s → %.1f°C\n", $1, $2/1000}'
3、快速筛选含 “core” 或 “cpu” 字样的 zone 并显示温度:for z in /sys/class/thermal/thermal_zone*; do [ -f "$z/type" ] && grep -q -i "core\|cpu" "$z/type" && echo "$(cat $z/type): $(awk '{printf "%.1f°C", $1/1000}' $z/temp)"; done
四、使用 s-tui 实时终端界面监控核心温度与负载
s-tui 是基于 lm-sensors 构建的交互式终端监控工具,可同步显示每个 CPU 核心的实时温度、频率、功耗与使用率曲线,适合调试高负载场景下各核心温控响应是否均衡。
1、安装 s-tui:
Ubuntu/Debian:sudo apt install s-tui
Fedora/CentOS/RHEL:sudo dnf install s-tui
2、启动监控界面:s-tui
3、界面中按 T 键切换至温度视图,各核心温度将以独立色块柱状图形式动态刷新,顶部显示最高温核心编号及数值。
五、使用 watch 命令实现核心温度持续轮询
当需观察温度随时间变化趋势(如压力测试中各核心升温速率差异)时,watch 可周期性执行指定命令,避免手动重复输入,提升监控效率。
1、每2秒刷新一次完整 sensors 输出:watch -n 2 sensors
2、仅聚焦核心温度行,过滤无关信息:watch -n 1 'sensors | grep -E "(Core|Package)"'
3、高亮显示超过 75°C 的核心温度值:watch -n 1 'sensors | grep -E "(Core|Package)" | sed "s/\([7-9][5-9]\|8[0-9]\|9[0-9]\|1[0-9][0-9]\)\.0°C/&/g"'










