Я работаю sensors-detect
в моей системе с lm-sensors
потому что моя система продолжает закрываться, когда я смотрю видео YouTube
Таким образом, я задаюсь вопросом, как я могу найти температуры вентилятора и CPU вручную без стороннего программного обеспечения как lm-sensors
? Я просто не уверен, где они хранятся.
processor : 0
vendor_id : AuthenticAMD
cpu family : 16
model : 6
model name : AMD Athlon(tm) II X2 240e Processor
power management: ts ttp tm stc 100mhzsteps hwpstate
x86_64
Это походит на то, что Вы хотите, /sys/class/hwmon
и /sys/class/thermal
.
Оба из них обеспечивают простой основанный на оболочке доступ к данным, которые Вы хотите (hwmon каталог будет также включать другие типы датчика). У каждого есть один каталог для каждого интерфейса датчика в Вашей системе (который может иметь больше чем один датчик).
Три других вещи отметить, хотя:
sensors
управляйте даже, после того как секунда не должна иметь никакого заметного эффекта. На самом деле регулярно чтение файлов в вышеупомянутых каталогах может иметь больше эффекта.Я не знаю то, что Вы действительно хотите. Программа lm-датчика (и поэтому sensors
команда), используют libsensor библиотеку; в случае, если Вы используете Ubuntu 18.04, это - libsensors4, версия 3.4.0-4. Это - та же библиотека, которая читает температуру как видно в sys
каталог.
Для подведения его датчики являются хорошим выбором. Наблюдать, что температура непрерывно использует
watch -n 1 sensors
Если Вы хотите записать программу, необходимо смотреть на libsensors с man libsensors
или смотрите в /usr/share/doc/
. Необходимо включать #include <sensors/sensors.h>
. Это будет использовать sensors.conf
файлы/etc/sensors3.conf и/или/etc/sensors.conf. Далее (пользователи) конфигурация могут быть найдены в /etc/sensors.d/
, если используется.
Если Вы думаете, что отсутствуете, некоторые датчики смотрят на /sys/class/thermal
или связанный /sys/devices/virtual/thermal
каталог.
Получить температуры всего теплового использования зон
$ cat /sys/devices/virtual/thermal/thermal_zone?/temp
77000
66000
67000
Температура измеряется в miliCelcius (мГц), в случае выше 77.0, 66.0, 67,0 °C.
Следить непрерывно за использованием
watch -n 1 cat /sys/devices/virtual/thermal/thermal_zone?/temp
В этом каталоге можно также найти информацию об охлаждении (вентилятор) устройства, и как регуляторы PID программируются.
Я также хотел бы заявить, что некоторая защита перегрева является кодированными базирующимися очень аппаратными средствами (это - хорошая идея), куда данные помещаются в Вашу BIOS.
Этот ответ об одном способе контролировать температуру процессора вручную для некоторых процессоров Intel через доступ к Машине определенным регистрам (MSR) непосредственно.
Первая вещь отметить, в этом случае, что читается из MSR, относительно Tcc, предельной температуры, таким образом, дополнительное вычисление требуется, чтобы определять фактическую температуру.
Обратитесь к Intel® 64 и Руководству Разработчика программного обеспечения Архитектуры IA-32, или в Вашем случае эквивалентный AMD.
В моем случае я хочу биты 22-16 из MSR в 0x1B1, иначе IA32_PACKAGE_THERM_STATUS. Tcc для моего более старого i7-2600K составляет 98 градусов.
Вот простой сценарий для контроля температуры (и частота ЦП) вручную:
#! /bin/dash
#
# temp_mon3 Smythies 2016.10.05
# a simplified version of temp_mon2,
# for monitoring temp.
# Note: it is on purpose that -a is not used.
# Also CPU0 frequency (1 is good enough, when all
# are loaded).
#
# temp_mon2 Smythies 2016.09.29
# Monitor Package temperatures.
# Use clock modulation to control temps.
# i.e. simulate the second to last level
# of defense.
# Use simple primatives.
# run as sudo
# hardcoded for my tcc of 98 degrees.
#
echo ... begin package temperature monitoring ...
#
# In case I forgot (which I often do)
modprobe msr
#
# first let the drastic effect of the sudo command decay
# Done later in temp_mon3.
#
# some stuff
COMMAND="rdmsr --bitfield 22:16 -u 0x1B1"
COMMAND2="cat /sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq"
#
# then get on with it
while [ 1 ];do
sleep 4
TEMP_RAW=$(eval $COMMAND)
CPU0_FREQ=$(eval $COMMAND2)
TEMP_ACT=$((98-TEMP_RAW))
echo "$TEMP_ACT $CPU0_FREQ"
done
И вот некоторый демонстрационный вывод, где я добавляю некоторую загрузку ЦП спустя некоторое время (временный файл идет от 31 до 73 градусов):
$ sudo ./temp_mon3
[sudo] password for doug:
... begin package temperature monitoring ...
31 1605275
31 1605154
32 1605164
30 1605148
31 1605176
51 3511279
54 3511278
55 3511279
57 3511283
58 3511279
60 3511278
61 3511284
63 3511279
64 3511280
64 3511280
66 3511280
67 3511278
68 3511280
68 3511281
69 3511278
71 3511280
70 3511281
71 3511281
71 3511280
72 3511276
72 3511277
73 3511283
73 3511279
^C
Установите Psensor (psensor) из репозиториев Ubuntu по умолчанию и настройте Psensor для автоматического проигрывания аварийного звука каждый раз, когда температура выходит за предел определенного максимума пользователя. Цель этого состоит в том, чтобы позволить Вам услышать звук предупреждения, прежде чем Ваша система закроется, не добавляя дополнительное приложение наверху на Вашу систему.
Psensor отображает себя на рабочем столе так же мало значка термометра в области уведомлений в правом верхнем углу рабочего стола рядом с часами. Можно щелкнуть правой кнопкой по значку термометра в любое время для отображения аппаратных температур.
Поскольку температура отображается в виде файла (/sys/class/thermal/thermal_zone0/temp
) в системе Linux, мы можем найти ответ, прочитав файл. Чтобы узнать температуру только с помощью скрипта оболочки:
Выполните команду: touch get_temperature.sh
, чтобы создать новый пустой файл;
Введите следующий код ниже:
#!/bin/sh
TEMP_RAW=$(cat /sys/class/thermal/thermal_zone0/temp)
# TEMP_CEL=$(expr $TEMP_RAW / 1000)
TEMP_CEL=$(echo "scale=2;$TEMP_RAW / 1000" | bc)
TEMP_CEL_W_SIGN=temp=${TEMP_CEL}\'C
# print
echo $TEMP_CEL_W_SIGN
Чтобы сделать скрипт исполняемым , запустите: sudo chmod +x get_temperature.sh
;
Выполните скрипт, выполнив: ./get_temperature.sh
.
Редактировать: Спасибо за совет в разделе комментариев!