У меня есть ноутбук (ThinkPad) с 2 процессорами. В настоящее время я могу прочитать температуру процессора из файлов ниже с помощью cat (1):
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
Мой вопрос заключается в том, почему ядро хранит эту информацию в очень многих разных местах, и какой из них является «стандартным» файлом для чтения температуры процессора?
Это происходит из-за systemd (я использую Arch Linux) или несистемных дистрибутивов Linux, таких как Slackware, по-другому?
Во-первых,
/sys/class
это удобный способ найти вещи/sys
. Вы найдете все, что на самом деле является символической ссылкой; Я почти уверен, что ваша первая строфа является символической ссылкой на вашу третью строфу.2-й раздел - это ядро, считывающее температуру непосредственно из процессора / чипсета. Третья строфа - это ядро, получающее значение из BIOS через ACPI. Хотя в вашей системе они могут давать один и тот же ответ, им это не нужно (например, BIOS может использовать разные датчики, усреднять несколько вместе или применять некоторые специфичные для платы настройки).
Наконец, каждая строфа имеет два разных показания, потому что, скорее всего, два термометра. Или, по крайней мере, API аппаратного обеспечения позволяет это.
источник
Посмотрите на файлы * _label, чтобы увидеть, о чем идет речь - вот мой i5:
(grep "" просто используется как "cat with filenames")
Итак, вот общая температура процессора плюс температура на ядро.
В большой многопроцессорной системе вы можете увидеть десятки записей.
источник