温馨提示×

如何通过cpuinfo监控温度变化

小樊
38
2026-01-02 05:35:24
栏目: 编程语言

核心说明 /proc/cpuinfo 不包含温度信息,无法用来直接监控 CPU 温度。Linux 下应使用 lm-sensors 的 sensors、内核 /sys/class/thermal 接口,或 Python 的 psutil.sensors_temperatures();Windows 则可通过 WMI/OpenHardwareMonitor 读取传感器数据。若仅需快速查看,BIOS/UEFI 的 Hardware Monitor 页面也可显示温度。

Linux 常用做法

  • 使用 sensors 实时监控:安装并检测传感器后查看温度,例如 sudo apt-get install -y lm-sensors && sudo sensors-detect --auto watch -n 1 “sensors | grep ‘°C’” 输出示例: coretemp-isa-0000 Core 0: +47.0°C (high = +80.0°C, crit = +100.0°C)
  • 直接读取内核 thermal 文件:温度值单位为毫摄氏度,需除以 1000 watch -n 1 “awk ‘{printf "%.1f°C\n", $1/1000}’ /sys/class/thermal/thermal_zone0/temp”
  • 用 Python 获取并持续打印: pip install psutil py-cpuinfo python3 - <<‘PY’ import time, psutil while True: temps = psutil.sensors_temperatures() for chip, entries in temps.items(): for e in entries: print(f"{chip} {e.label or e.name}: {e.current:.1f}°C") print(“-” * 30); time.sleep(2) PY 以上方法分别基于 sensors、/sys 与 psutil,适合服务器与桌面环境的持续监控。

Windows 做法

  • 使用 Python + WMI/OpenHardwareMonitor(推荐): pip install wmi pywin32 py-cpuinfo python3 - <<‘PY’ import wmi, time try: w = wmi.WMI(namespace=“root\OpenHardwareMonitor”) while True: for s in w.Sensor(): if s.SensorType == “Temperature” and “core” in s.Name.lower(): print(f"{s.Name}: {s.Value:.1f} °C") print(“-” * 30); time.sleep(2) except Exception as e: print(“未获取到传感器数据,请确认已安装并运行 OpenHardwareMonitor:”, e) PY
  • 无 Python 时,可在 Windows 上运行 OpenHardwareMonitor 图形界面查看温度,或用 SpeedFan 等工具读取传感器并做基础告警。

快速排查与阈值参考

  • 传感器未就绪:Linux 先运行 sudo sensors-detect;若仍无读数,检查主板/CPU 是否支持传感器、内核模块(如 coretemp)是否加载,或尝试其他 thermal_zone
  • 识别正确的 thermal_zone:不同设备路径可能不同,可先查看各 zone 的 type 或 label,再选择 CPU 对应的 zone 读取。
  • 简单压力升温测试:用 stresscpuburn 制造负载,观察温度上升与回落曲线,评估散热是否达标;若温度接近或超过标注的 high/crit 阈值,需检查风道、清灰、导热材料与散热器安装。
  • 常见温度范围(视型号与环境而定):轻载约 30–50°C,满载常见 70–90°C;超过厂商标注的 Tjmax/crit 会触发降频或关机保护。

0