Сегодн в статье научимся узнавать температуру жестких дисков (HDD) в Ubuntu Server, данная инструкция будет актуальна и для других дистрибутивов Linux.
В этой заметке установим hddtemp и узнаем, как с помощью неё можно посмотреть температуру жесткого(их) диска(ов). Так же рассмотрим возможность добавления в базу hddtemp SSD диска которого нет в его базе.
Установка hddtemp
Прежде всего установим саму утилиту. Открываем терминал и набираем следующее:
sudo apt install hddtemp
Попробуем запустить:
sudo hddtemp /dev/sda
/dev/sdd: WDC WD2000FYYZ-01UL1B2: 35°C
В результате мы получили достаточно длинную строку с описанием и значением. В то время как для например скриптов нам нужно голое значение.
Проще всего его можно получить запустив hddtemp с ключом -n
.
Что избавит нас от awk
, sed
и т.п.
sudo hddtemp -n /dev/sda
Данными примерами мы посмотрели температуру жесткого диска HDD, а если посмотреть на SSD. Давайте посмотрим его температуру:
sudo hddtemp /dev/sdb
/dev/sda: XrayDisk 120GB: 41°C
Как видим SSD тоже прекрасно определился программой и выдал нам температуру. Но что делать, если вывод будет следующим:
WARNING: Drive /dev/sda doesn't seem to have a temperature sensor.
WARNING: This doesn't mean it hasn't got one.
WARNING: If you are sure it has one, please contact me (hddtemp@guzu.net).
WARNING: See --help, --debug and --drivebase options.
/dev/sda: Samsung SSD 860 EVO 500G B ▒@: no sensor
Похоже на то, что данных о SSD диске нет в базе.
При запуске с ключом --debug
выведет поля SMART.
Температура HDD выводится в поле со значением 194, а как же обстоят дела у SSD диска:
sudo hddtemp --debug /dev/sda
================= hddtemp 0.3-beta15 ==================
Model: Samsung SSD 860 EVO 500G B ▒@
field(5) = 0
field(9) = 76
field(12) = 6
field(177) = 0
field(179) = 0
field(181) = 0
field(182) = 0
field(183) = 0
field(187) = 0
field(190) = 30
field(195) = 0
field(199) = 0
field(235) = 2
field(241) = 45
If one of the field value seems to match the temperature, be sure to read
the hddtemp man page before sending a report (section REPORT). Thanks.
В поле 190 стоит цифра 30, что похоже на температуру нашего диска.
Добавим наш SSD диск в базу командой из под root:
sudo su
echo '"Samsung SSD 860 EVO 500G" 190 C "Samsung SSD 860 EVO 500G"' >> /etc/hddtemp.db
Проверим:
sudo hddtemp -n /dev/sda
Из указанных примеров видно, что для доступа к жестким дискам нужен рутовый аккаунт.
По причине этого мы имеем ограничение по использованию. Например с Zabbix.
Но hddtemp может работать как демон с доступом по TCP для любого пользователя.
Для запуска демона прежде всего нужно определится какие именно диски он будет опрашивать.
По умолчанию опрос делается первого диска sda, но мы можем это изменить, меняем конфигурацию:
sudo systemctl edit hddtemp.service
[Service]
ExecStart=
ExecStart=/usr/sbin/hddtemp -d /dev/sdc -l 127.0.0.1 -p 7634
Перезапустим:
sudo systemctl restart hddtemp.service
Проверим:
telnet localhost 7634
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
|/dev/sda|WDC WD2000FYYZ-01UL1B2|33|C|Connection closed by foreign host.
Выводит, но пользоваться этим неудобно, поэтому создадим простой скрипт:
nano my_hddtemp.sh
#!/bin/sh
myDisk=`echo "" | netcat -n 127.0.0.1 7634 |sed 's/|//m' | sed 's/||/ \n/g' | awk -F'|' '{print $3}'`
echo $myDisk
Делаем его исполняемым:
sudo chmod +x my_hddtemp.sh
Запускаем:
./my_hddtemp.sh
На этом все.
P.S. Еще одна полезная команда посмотреть smart информацию
smartctl -a /dev/sda -d sat+cciss,Х
[endtxt]