麒麟os下可通过五种命令行方法查看ssd温度:一、smartctl读取s.m.a.r.t.数据;二、hddtemp工具查询;三、/sys/class/nvme直接读取(单位k);四、tlp-stat查看笔记本nvme温度;五、/sys/class/thermal识别平台级热区(单位m°c)。

如果您在麒麟OS系统中需要获取固态硬盘当前工作温度,但缺乏图形化监控界面或预装工具,则可通过命令行调用S.M.A.R.T.接口、专用工具或内核热子系统实现。以下是多种兼容麒麟OS V10各版本(含桌面版、SP1/SP3服务器版)及飞腾/鲲鹏平台的固态硬盘温度查看方法:
一、使用 smartctl 命令读取 S.M.A.R.T. 温度值
smartctl 是 Linux 下标准的 S.M.A.R.T. 检测工具,可直接从 NVMe 或 SATA SSD 的固件中提取原始温度数据,适用于所有支持 S.M.A.R.T. 的固态硬盘,无需额外传感器驱动。
1、确认固态硬盘设备路径:执行 lsblk -d -o NAME,ROTA,MODEL 区分 NVMe(如 nvme0n1)与 SATA(如 sda)设备;
2、对 SATA SSD 执行查询:运行 sudo smartctl -a /dev/sda | grep -i "temperature_celsius\|Temperature";
3、对 NVMe SSD 执行查询:运行 sudo smartctl -a /dev/nvme0n1 | grep -i "temperature";
4、若输出含 “Current Temperature: 38 Celsius”,则表示当前温度为 38°C;部分 NVMe 设备可能显示为 “Temperature: 303K”,需换算为摄氏度(303K − 273 = 30°C)。
二、安装并调用 hddtemp 工具获取 SSD 温度
hddtemp 是轻量级命令行工具,专为读取 ATA/SATA 硬盘及部分 NVMe SSD 的 S.M.A.R.T. 温度字段设计,支持麒麟OS基于 Debian/Ubuntu 的发行版,输出简洁直观。
1、更新软件源并安装:执行 sudo apt update && sudo apt install hddtemp;
2、启动 hddtemp 守护进程(部分版本需手动启用):运行 sudo systemctl start hddtemp;
3、查询指定设备温度:执行 sudo hddtemp /dev/sda(替换为实际设备名);
4、若返回 /dev/sda: KINGSTON SA400S37120G: 34°C,即表明该固态硬盘当前温度为 34°C。
三、通过 /sys/class/nvme 接口直接读取 NVMe SSD 温度
Linux 内核 ≥5.4 后,NVMe 驱动原生暴露温度信息至 sysfs,麒麟OS V10 SP3(内核 ≥5.10)已完整支持该路径,无需安装任何第三方软件,适合最小化或安全加固环境。
1、列出所有 NVMe 控制器:执行 ls /sys/class/nvme/(常见为 nvme0);
2、检查设备是否支持温度字段:运行 ls /sys/class/nvme/nvme0/ | grep temp,确认存在 temperature 文件;
3、读取当前温度值:执行 cat /sys/class/nvme/nvme0/temperature;
4、注意:该值单位为开尔文(K),例如输出 305 表示 32°C(305 − 273 = 32)。
四、使用 tlp-stat 查看 NVMe SSD 温度(仅限笔记本平台)
tlp 是麒麟OS V10 中广泛预装的电源管理工具,其 tlp-stat 子命令可汇总包括 NVMe SSD 在内的多项硬件状态,尤其适用于搭载 Intel/AMD 移动平台的国产笔记本设备。
1、确认 tlp 是否已安装:执行 which tlp-stat,若无输出则先运行 sudo apt install tlp;
2、启用 tlp 服务(首次使用需启用):运行 sudo systemctl enable tlp && sudo systemctl start tlp;
3、查看存储设备状态:执行 sudo tlp-stat -s | grep -A5 -i "nvme\|ssd";
4、在输出中查找形如 NVME: /dev/nvme0n1 → temp=31°C 的条目,其中 31°C 即为当前固态硬盘工作温度。
五、通过 /sys/class/thermal 子系统识别 SSD 相关热区
部分国产平台(如飞腾D2000、鲲鹏920)的 BIOS/UEFI 固件会将 NVMe SSD 温度映射至 thermal_zone,麒麟OS V10 SP3 内核可将其识别为独立热区,适用于无 S.M.A.R.T. 支持但具备平台级热传感的整机。
1、列出全部热区:执行 ls /sys/class/thermal/;
2、逐个检查热区类型:运行 for z in /sys/class/thermal/thermal_zone*; do [ -f "$z/type" ] && echo "$z: $(cat $z/type)"; done | grep -i "nvme\|ssd\|disk";
3、定位目标热区(如 thermal_zone5)后,读取其温度:执行 cat /sys/class/thermal/thermal_zone5/temp;
4、注意:该值单位为毫摄氏度(m°C),例如输出 31250 表示 31.25°C。











