可通过命令行调用lm-sensors、/sys/class/hwmon、/sys/class/thermal、acpi及watch等五种方法在麒麟os中查看硬件温度,均兼容v10各版本,支持实时监控与单位转换。

如果您在麒麟OS系统中需要获取硬件运行温度数据,但缺乏直观的图形化工具或预装监控界面,则可通过命令行方式调用内核接口或第三方工具实现。以下是多种兼容麒麟OS各版本(包括V10桌面版、SP3交易增强版等)的硬件温度查看方法:
一、使用 lm-sensors 工具检测硬件温度
lm-sensors 是一套成熟的 Linux 硬件监控套件,能自动识别主板、CPU、芯片组内置的数字传感器,并提供结构清晰的温度、电压、风扇转速等输出,适用于大多数麒麟OS桌面与服务器环境。
1、打开终端,以 root 权限执行安装命令。对于基于 Debian/Ubuntu 的麒麟OS分支(如 V10 桌面版),运行:sudo apt-get install lm-sensors
2、对于基于 CentOS/RHEL 衍生的麒麟OS服务器版(如 V10 SP3 交易增强版),运行:sudo yum install lm_sensors
3、完成安装后,执行传感器自动探测:sudo sensors-detect
4、按提示连续敲击回车接受默认选项,直至出现 “To load everything, add the lines above to /etc/modules” 提示;随后执行:sudo modprobe coretemp
5、最后运行以下命令查看实时温度:sensors
二、直接读取 /sys/class/hwmon 接口文件
/sys/class/hwmon 是 Linux 内核标准硬件监控接口,无需额外安装软件,所有麒麟OS内核(≥4.19)均原生支持,特别适合最小化部署或安全加固场景下的只读监控。
1、列出全部硬件监控设备目录:ls /sys/class/hwmon/
2、逐个检查各 hwmon 目录下的 name 文件以识别对应芯片:cat /sys/class/hwmon/hwmon0/name
3、定位到含 temperature 字样的设备(如 coretemp、k10temp、ft2000_temp 等),读取其 temp*_input 文件:cat /sys/class/hwmon/hwmon0/temp1_input
4、注意:该值单位为毫摄氏度(m°C),例如输出 42500 表示 42.5°C。
三、通过 /sys/class/thermal 子系统获取温度
thermal 子系统专为温度调节与热策略设计,结构清晰、命名语义明确,尤其适配飞腾、鲲鹏等国产CPU内置 thermal_zone,是麒麟OS V10 SP3 中推荐使用的原生方式。
1、列出所有热区:ls /sys/class/thermal/
2、常见热区包括 thermal_zone0(CPU封装)、thermal_zone1(SoC裸片)、thermal_zone2(GPU)等;确认目标区域后,读取其温度文件:cat /sys/class/thermal/thermal_zone0/temp
3、该值同样以毫摄氏度为单位,需除以1000转换为摄氏度,例如输出 48200 对应 48.2°C。
四、使用 acpi 命令读取主板温度传感器
acpi 命令可访问 ACPI(高级配置与电源接口)定义的温度设备,适用于部分搭载 Intel 或 AMD 主板芯片组的麒麟OS设备,尤其在 BIOS 启用 ACPI Thermal Zone 支持时有效。
1、检查系统是否已启用 acpi 模块:lsmod | grep acpi
2、若未加载,手动加载 acpi_thermal_rel 模块:sudo modprobe acpi_thermal_rel
3、执行命令查看 ACPI 温度信息:acpi -t
4、输出示例中将显示类似 Thermal 0: ok, 46.0 degrees C 的条目,其中 “Thermal 0” 代表首个 ACPI 温度传感器节点。
五、结合 watch 命令实现实时温度刷新
watch 命令可用于周期性执行任意命令并高亮显示变化部分,适用于对温度波动敏感的调试或运维场景,避免重复手动输入。
1、每两秒刷新一次 sensors 输出:watch -n 2 sensors
2、每秒刷新一次 /sys/class/hwmon 下指定核心温度:watch -n 1 'cat /sys/class/hwmon/hwmon2/temp2_input | awk "{printf "%.1f°C\n", $1/1000}"'
3、高亮显示温度超过 75°C 的行:watch -n 1 "sensors | grep -E '(Package|Core)' | awk '$2 ~ /\+/ && substr($2,1,length($2)-2)+0 > 75 {print \"\033[1;31m\" $0 \"\033[0m\"} || print $0'"










