麒麟OS V10中可通过三种方式获取温度:1. 读取/sys/class/thermal下含x86_pkg_temp等标识的thermal_zone*/temp(单位m°C);2. 使用lm-sensors查看各CPU核心温度(需安装、探测并加载对应驱动);3. 通过/sys/class/hwmon或/sys/class/nvme直接读取毫摄氏度或开尔文值并换算。

您正在麒麟OS系统中排查设备过热问题,或需要确认散热策略是否生效,但当前没有图形化监控工具可用,必须通过终端命令快速获取CPU、主板、硬盘等关键部件的实时温度数据。
直接读取 /sys/class/thermal 获取CPU封装温度
该方法无需安装任何软件,依赖内核原生 thermal 子系统,所有麒麟OS V10版本(含SP1/SP3)均支持,但返回值单位为毫摄氏度(m°C),需手动换算。
执行 ls /sys/class/thermal/ 列出全部热区目录,常见如 thermal_zone0、thermal_zone1 等。
运行 cat /sys/class/thermal/thermal_zone*/type 2>/dev/null 查看各热区类型,重点关注输出含 【x86_pkg_temp】、【soc_thermal】 或 【cpu-thermal】 的区域编号。
对目标热区(例如 thermal_zone0)执行 cat /sys/class/thermal/thermal_zone0/temp,若返回 47250,即表示当前温度为 47.25°C。
用 lm-sensors 查看各CPU核心独立温度
lm-sensors 能识别 Intel/AMD/x86_64 及部分国产平台(飞腾D2000、鲲鹏920)的 per-core 温度传感器,输出明确标注 “Core 0”、“Core 1” 等字段,适合精准定位异常发热核心。
第一步:安装工具。apt源系统(如V10桌面版)执行 sudo apt update && sudo apt install lm-sensors;yum源系统(如V10 SP3服务器版)执行 sudo yum install lm_sensors。
第二步:运行探测脚本 sudo sensors-detect,全程按回车接受默认选项,当提示 “Probe I2C adapters?” 时输入 YES,其余保持回车直至结束。
第三步:加载对应驱动。x86_64平台执行 sudo modprobe coretemp;飞腾平台执行 sudo modprobe ft2000_temp;鲲鹏平台执行 sudo modprobe hisi_thermal。
第四步:执行 sensors,输出中所有以 “Core” 开头的行即为各物理/逻辑核心温度,单位为°C,例如 Core 0: +44.0°C。
通过 /sys/class/hwmon 读取毫摄氏度原始值
该路径映射硬件传感器寄存器,响应快、无依赖,特别适合最小化部署或安全加固环境下的只读监控,但需注意单位是毫摄氏度,且不同芯片的 temp*_input 文件与物理位置对应关系不统一。
执行 ls /sys/class/hwmon/ 确认存在 hwmon0、hwmon1 等目录。
运行 cat /sys/class/hwmon/hwmon0/name 2>/dev/null 查看芯片标识,若输出为 coretemp、ft2000_temp 或 k10temp,说明该设备支持温度读取。
执行 ls /sys/class/hwmon/hwmon0/temp*_label 2>/dev/null,若有输出(如 temp1_label),则对应 temp1_input 即为该标签所指位置的原始温度值。
读取 cat /sys/class/hwmon/hwmon0/temp1_input,结果如 48250 表示 48.25°C;【若无 temp*_label 文件,仅凭 temp*_input 编号无法确定对应核心,请优先使用 sensors 命令】。
查看固态硬盘当前工作温度
SSD温度需区分接口类型:SATA盘走 S.M.A.R.T. 接口,NVMe盘既可走 smartctl 也可走内核 sysfs 路径,后者在麒麟OS V10 SP3(内核 ≥5.10)中已原生支持,无需额外工具。
方法一:用 smartctl 查询(通用)
先执行 lsblk -d -o NAME,ROTA,MODEL 确认设备名(SATA为 sda,NVMe为 nvme0n1);
对 SATA 执行 sudo smartctl -a /dev/sda | grep -i "temperature_celsius";
对 NVMe 执行 sudo smartctl -a /dev/nvme0n1 | grep -i "temperature";
若输出含 Temperature: 303K,需减去 273 得到摄氏度。
方法二:NVMe 直接读 sysfs(推荐,免安装)
执行 ls /sys/class/nvme/ 确认控制器名(如 nvme0);
检查是否存在温度文件:ls /sys/class/nvme/nvme0/ | grep temp;
若返回 temperature,则运行 cat /sys/class/nvme/nvme0/temperature,该值单位为开尔文(K),需减 273 换算。

















