我有一台带 2 个 CPU 的笔记本电脑(thinkpad)。目前,我可以使用 cat(1) 从以下文件中读取 CPU 温度:
cat /sys/class/thermal/thermal_zone0/temp
cat /sys/class/thermal/thermal_zone1/temp
cat /sys/devices/platform/coretemp.0/hwmon/hwmon1/temp2_input
cat /sys/devices/platform/coretemp.0/hwmon/hwmon1/temp3_input
cat /sys/devices/LNXSYSTM:00/LNXCPU:00/thermal_cooling/subsystem/thermal_zone1/temp
cat /sys/devices/LNXSYSTM:00/LNXCPU:01/thermal_cooling/subsystem/thermal_zone0/temp
Run Code Online (Sandbox Code Playgroud)
我的问题是为什么内核将这些信息存储在这么多不同的地方,哪个是读取 CPU 温度的“标准”文件?
这是因为 systemd(我使用的是 Arch Linux)还是像 Slackware 这样的非系统 Linux 发行版有不同的方法?
首先,/sys/class
是一种在/sys
. 你会发现里面的所有东西实际上都是一个符号链接;我很确定你的第一节是符号链接到你的第三节。
第二节是内核直接从 CPU/芯片组读取温度。第三节是内核通过 ACPI 从 BIOS 获取值。虽然在您的系统上它们可能会给出相同的答案,但它们不需要(例如,BIOS 可能使用不同的传感器,将几个传感器平均在一起,或应用一些特定于板的调整)。
最后,每节都有两个不同的读数,因为可能有两个温度计。或者至少,硬件的 API 允许这样做。
归档时间: |
|
查看次数: |
17516 次 |
最近记录: |