Как узнать температуру HDD в Ubuntu Server

Сегодн в статье научимся узнавать температуру жестких дисков (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,Х

Если есть вопросы, то пишем в комментариях.

Также можете помочь проекту, заранее всем СПАСИБО!!!

.

RSS

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

5 2 votes
Рейтинг статьи
Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 комментариев
Inline Feedbacks
Просмотреть все комментарии