lm_sensors — ПО, используемое в *nix системах для получения данных с аппаратных датчиков о температуре компонентов, напряжении питания или скорости вращения вентиляторов, а так же задания минимального и максимального значения для каждого датчика, при достижении которого система начинает издавать звуковые сигналы через pc speaker (что не всегда является хорошей идеей).
Установка:
# apt-get install lm_sensors3
Прежде чем смотреть, каковы значения датчиков, эти датчики нужно сначала найти, используя утилиту sensors-detect. А чтобы она не спрашивала у вас десятки раз, согласны ли вы просканировать тот или иной узел аппаратной платформы, нужно сразу сказать ей да, с помощью утилиты yes:
# yes | sensors-detect
Утилита найдёт все датчики в системе и активирует необходимые для их работы модули ядра.
Теперь можно посмотреть данные, передаваемые датчиками с помощью утилиты sensors:
# sensorscoretemp-isa-0000Adapter: ISA adapterPhysical id 0: +37.0°C (high = +80.0°C, crit = +100.0°C)Core 0: +34.0°C (high = +80.0°C, crit = +100.0°C)Core 1: +36.0°C (high = +80.0°C, crit = +100.0°C)Core 2: +27.0°C (high = +80.0°C, crit = +100.0°C)Core 3: +30.0°C (high = +80.0°C, crit = +100.0°C)it8728-isa-0a30Adapter: ISA adapterin0: +0.08 V (min = +0.00 V, max = +3.06 V)in1: +2.02 V (min = +0.00 V, max = +3.06 V)in2: +2.00 V (min = +0.00 V, max = +3.06 V)in3: +2.03 V (min = +0.00 V, max = +3.06 V)in4: +0.01 V (min = +0.00 V, max = +3.06 V)in5: +1.79 V (min = +0.00 V, max = +3.06 V)in6: +1.55 V (min = +0.00 V, max = +3.06 V)3VSB: +3.38 V (min = +0.00 V, max = +6.12 V)Vbat: +3.14 Vfan1: 802 RPM (min = 0 RPM)fan2: 857 RPM (min = 0 RPM)fan3: 0 RPM (min = 0 RPM)fan4: 0 RPM (min = 0 RPM)fan5: 0 RPM (min = 0 RPM)temp1: +27.0°C (low = +127.0°C, high = +127.0°C) sensor = thermistortemp2: +127.0°C (low = +127.0°C, high = +127.0°C) sensor = thermistortemp3: +28.0°C (low = +127.0°C, high = +127.0°C) sensor = Intel PECIintrusion0: ALARM
Много не нужной информации и некоторые из значений не корректны, поэтому надо всё это дело настроить! Системный файл конфигурации редактировать не стоит, так как он заменяется при обновлении программы. Для локальной конфигурации создана папка /etc/sensors.d, в которой мо
жно создавать свои конфиги. Файл может иметь любое имя, это не важно, и будет перекрывать настройки системного файла, если в нём уже есть конфиги для настраиваемого оборудования. Создадим файл с красивым именем /etc/sensors.d/sensors.local.conf, а исходные данные для настройки возьмём из уже выполненной ранее команды sensors, и той же команды, с аргументом -u, что даст больше информации:
жно создавать свои конфиги. Файл может иметь любое имя, это не важно, и будет перекрывать настройки системного файла, если в нём уже есть конфиги для настраиваемого оборудования. Создадим файл с красивым именем /etc/sensors.d/sensors.local.conf, а исходные данные для настройки возьмём из уже выполненной ранее команды sensors, и той же команды, с аргументом -u, что даст больше информации:
# sensors -ucoretemp-isa-0000Adapter: ISA adapterPhysical id 0:temp1_input: 36.000temp1_max: 80.000temp1_crit: 100.000temp1_crit_alarm: 0.000Core 0:temp2_input: 35.000temp2_max: 80.000temp2_crit: 100.000temp2_crit_alarm: 0.000Core 1:temp3_input: 36.000temp3_max: 80.000temp3_crit: 100.000temp3_crit_alarm: 0.000Core 2:temp4_input: 27.000temp4_max: 80.000temp4_crit: 100.000temp4_crit_alarm: 0.000Core 3:temp5_input: 31.000temp5_max: 80.000temp5_crit: 100.000temp5_crit_alarm: 0.000it8728-isa-0a30Adapter: ISA adapterin0:in0_input: 0.036in0_min: 0.000in0_max: 3.060in0_alarm: 0.000in0_beep: 0.000in1:in1_input: 2.016in1_min: 0.000in1_max: 3.060in1_alarm: 0.000in1_beep: 0.000in2:in2_input: 2.004in2_min: 0.000in2_max: 3.060in2_alarm: 0.000in2_beep: 0.000in3:in3_input: 2.028in3_min: 0.000in3_max: 3.060in3_alarm: 0.000in3_beep: 0.000in4:in4_input: 0.012in4_min: 0.000in4_max: 3.060in4_alarm: 0.000in4_beep: 0.000in5:in5_input: 1.788in5_min: 0.000in5_max: 3.060in5_alarm: 0.000in5_beep: 0.000in6:in6_input: 1.548in6_min: 0.000in6_max: 3.060in6_alarm: 0.000in6_beep: 0.0003VSB:in7_input: 3.384in7_min: 0.000in7_max: 6.120in7_alarm: 0.000in7_beep: 0.000Vbat:in8_input: 3.144fan1:fan1_input: 802.000fan1_min: 0.000fan1_alarm: 0.000fan1_beep: 1.000fan2:fan2_input: 857.000fan2_min: 0.000fan2_alarm: 0.000fan2_beep: 1.000fan3:fan3_input: 0.000fan3_min: 0.000fan3_alarm: 0.000fan3_beep: 1.000fan4:fan4_input: 0.000fan4_min: 0.000fan4_alarm: 0.000fan4_beep: 1.000fan5:fan5_input: 0.000fan5_min: 0.000fan5_alarm: 0.000fan5_beep: 1.000temp1:temp1_input: 27.000temp1_max: 127.000temp1_min: 127.000temp1_alarm: 0.000temp1_type: 4.000temp1_offset: 0.000temp1_beep: 1.000temp2:temp2_input: 127.000temp2_max: 127.000temp2_min: 127.000temp2_alarm: 0.000temp2_type: 4.000temp2_offset: 0.000temp2_beep: 1.000temp3:temp3_input: 28.000temp3_max: 127.000temp3_min: 127.000temp3_alarm: 0.000temp3_type: 6.000temp3_offset: 92.000temp3_beep: 1.000intrusion0:intrusion0_alarm: 1.000
Итак, прежде чем настраивать датчики, нужно задать чип, на котором эти датчики находятся. В примере, указанном выше, чипа 2 — coretemp-isa-0000 и it8728-isa-0a30. Указав чип, приступаем к настройке — скроем вывод данных ,которые, лично мне, не интересны. Это данные об отсутствующих вентиляторах (fan3-5), о напряжении питания разных модулей системы или о не подключённых датчиках температуры (temp2). Для игнорирования их вывода, используется опция ignore в сочетании с именем объекта:
chip «coretemp-isa-0000»#IGNOREignore in0ignore in1ignore in2ignore in3ignore in4ignore in5ignore in6ignore in7ignore in8ignore intrusion0ignore fan3ignore fan4ignore fan5ignore temp2
Теперь настроим вентиляторы fan1 и fan2 на том же чипе, которые показывают в 2 раза меньшее количество оборотов, чем это есть в реальности. С помощью опции compute, можно производить арифметические операции со значением указанного датчика:
compute fan1 2*@, @/2compute fan2 2*@, @/2
Также есть опция label, с помощью которой можно переопределить название датчика, если оно определяется не корректно, либо просто хочется улучшить его челевекочитаемость:
label temp1 «CPU»
Нужно учитывать, что опция label работает как ожидается при использовании команды sensors, но может игнорироваться при использовании lm_sensors сторонними программами, например collectd эту опцию игнорирует.
Как уже упоминалось ранее, по умолчанию, демон lm_sensors подаёт звуковой сигнал на pc speaker при достижении заданного критического минимального или максимального значения датчика температуры либо если значение опускается до заданного значения датчика вентилятора. Пример этих значений (fan1_min: 0.000 у fan1 и temp1_max: 127.000 temp1_min: 127.000 у temp1):
fan1:fan1_input: 1584.000fan1_min: 0.000fan1_alarm: 0.000fan1_beep: 1.000temp1:temp1_input: 27.000temp1_max: 127.000temp1_min: 127.000temp1_alarm: 0.000temp1_type: 4.000temp1_offset: 0.000temp1_beep: 1.000
Эти значения можно корректировать, отключать звуковую сирену для конкретного датчика, либо вообще отключать звуковое оповещение глобально, так как это не всегда нужно.
Для корректировки значений есть опция set, используемая вместе с параметром и новым значением для этого параметра. Например, зададим параметру temp1_max значение 95:
set temp1_max 95
Отключим звуковой сигнал тревоги у вентилятора fan1_beep:
set fan1_beep 0
Либо отключим звуковой сигнал тревоги глобально для всех датчиков:
set beep_enable 0
(!) Для применения новых параметров, заданных опцией set, нужно выполнить команду sensors -s.
Конфиг, который получился у меня для использования совместно с collectd и материнской платой Gigabyte H87M-D3H:
chip «it8728-isa-0a30»#FANScompute fan1 2*@, @/2compute fan2 2*@, @/2#IGNOREignore in0ignore in1ignore in2ignore in3ignore in4ignore in5ignore in6ignore in7ignore in8ignore intrusion0ignore fan3ignore fan4ignore fan5ifnore temp2
Автор: Yar4e