在麒麟OS中实时监控CPU温度有五种方法:一、用lm-sensors工具安装探测后执行sensors命令;二、直接读取/sys/class/hwmon下temp_input文件(单位m°C);三、通过/sys/class/thermal/thermal_zone/temp获取原生热区温度;四、华为L410/W515等平台使用cputemp专用命令;五、结合watch实现动态刷新监控。
如果您在麒麟OS系统中需要实时掌握CPU运行温度,以判断是否存在过热风险或散热异常,则需借助内核暴露的硬件监控接口或第三方工具。以下是多种兼容麒麟OS(V10 SP3及后续版本,支持飞腾、鲲鹏、海光、兆芯、麒麟990等国产CPU平台)的有效方法:
一、使用 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、注意:该值单位为毫摄氏度(m°C),例如输出45000表示45.0°C。
四、使用 cputemp 命令(专用于华为L410/W515等麒麟990平台)
cputemp 是统信与华为联合适配的专用工具,可绕过通用传感器驱动限制,直接从麒麟990 SoC寄存器读取温度值,适用于 sensors 工具失效的 ARM64 国产平台终端。
1、确认系统是否已预装该命令:cputemp --version
2、若返回版本号(如 0.0.1),直接执行:cputemp
3、若提示 command not found,且系统为低版本华为L410/W515镜像,需手动安装工具包:sudo dpkg -i misctools_0.0.1-1_arm64.deb
4、安装完成后再次运行:cputemp,输出格式为:CPU Temp: 43.2°C
五、用 watch 实现动态刷新监控
watch 命令可周期性执行任意温度读取指令,形成类仪表盘效果,避免重复键入命令,适用于运维值守或压力测试期间持续观察。
1、对 sensors 输出进行每2秒刷新:watch -n 2 sensors
2、对 thermal_zone0 温度进行高亮刷新(配合 color 支持):watch -n 1 'cat /sys/class/thermal/thermal_zone0/temp | awk '{printf "%.1f°C\n", $1/1000}''
3、若需同时监控多个热区,可构造组合命令:watch -n 1 'echo "TZ0: $(cat /sys/class/thermal/thermal_zone0/temp) m°C"; echo "TZ1: $(cat /sys/class/thermal/thermal_zone1/temp) m°C"'