Системным администраторам необходимо следить за температурой своей системы, чтобы не допустить ее перегрева. Это также включает в себя отслеживание температуры жесткого диска (HDD). Когда система перегревается, это может повлиять на производительность и даже привести к краху системы. Поэтому многие системные администраторы используют сценарии оболочки для мониторинга температуры жесткого диска и оповещения в случае ее резкого повышения. Однако существуют различные сторонние инструменты, такие как inxi и hddtemp, с помощью которых можно проверить температуру жесткого диска, а также использовать их в сценариях оболочки. В этой статье мы узнаем, как узнать температуру жесткого диска в Linux.
Как узнать температуру жесткого диска в Linux
Ниже описаны шаги для получения температуры жесткого диска в Linux. Для этого мы будем использовать программы inxi и hddtemp.
В виртуальных гостевых средах, информация о температуре жесткого диска не передается.
1. Установите инструменты для проверки температуры жесткого диска
По умолчанию inxi и hddtemp не установлены в системах Linux. Откройте терминал и выполните следующие команды для их установки.
1 | sudo apt install inxi hddtemp |
Fedora, CentOS, AlmaLinux и Red Hat
Перед началом установки, необходимо включить репозиторий PowerTools
1 | sudo dnf install inxi hddtemp |
2. Получить температуру жесткого диска
Далее мы составим список всех наших дисков с помощью fdisk или других подобных команд.
1 | sudo fdisk -l |
ИЛИ
1 | lsscsi -g |
Жесткие диски обычно имеют путь в формате /dev/sdX. Вот команда для получения температуры всех жестких дисков в системе с помощью inxi.
1 | sudo inxi -xD |
Вот примерный вывод.
1 2 3 | Drives: HDD Total Size: 75.5GB (70.3% used) ID-1: /dev/sda model: HTS371050G8SA00 size: 60.0GB temp: 35C ID-2: USB /dev/sdb model: TransMemory size: 15.5GB temp: 0C |
Атрибут temp указывает температуру каждого жесткого диска. Обратите внимание, что приведенная выше команда должна быть запущена с правами root или sudo.
Если вы хотите получить температуру конкретного жесткого диска, вам нужно указать его в конце команды, как показано ниже.
1 | sudo inxi -xD /dev/sdb |
Эту же информацию можно получить с помощью утилиты hddtemp.
1 | sudo hddtemp /dev/sda |
Пример
1 | /dev/sda: HTS371050G8SA00: 36°C |
3. Автоматизация проверки температуры
Вам может понадобиться регулярно проверять температуру жестких дисков, поэтому удобно автоматизировать эту процедуру с помощью сценариев оболочки. Создайте пустой сценарий оболочки для этого, используя следующую команду.
1 | nano temp_check.sh |
Добавьте в него следующие строки.
1 2 3 4 5 6 7 8 9 | #!/bin/bash temperature=$(hddtemp /dev/sda | cut -d : -f3 | sed 's/[^0-9]*//g') # REPORT, когда температура жесткого диска превышает 50C if [ $temperature -ge 50 ]; then echo "ALERT: температура жесткого диска выше: $temperature" fi |
Сохраните и закройте файл. В приведенном выше коде мы используем утилиту hddtemp для получения температуры нашего жесткого диска /dev/sda. Мы передаем ее вывод команде cut & sed, чтобы извлечь точное числовое значение температуры. Затем мы используем условие if, чтобы проверить, превышает ли оно 50C. Если да, мы выводим предупреждающее сообщение об этом.
Замените /dev/sda на выбранный вами жесткий диск. Также вы можете заменить команду echo на команду cat, чтобы записать вывод в другой файл.
Сделайте сценарий оболочки исполняемым.
1 | sudo chmod +x temp_check.sh |
Вы можете запустить сценарий оболочки с помощью следующей команды.
1 | ./temp_check.sh |
Когда сценарий будет готов, вы можете даже создать cronjob, чтобы запускать его каждый день в одно и то же время. Откройте crontab с помощью следующей команды.
1 | crontab -e |
Добавьте в него следующую строку, чтобы запускать сценарий оболочки каждый день в 10.00 утра.
1 | 0 10 * * * ./temp_check.sh >/dev/null 2>&1 |
Сохраните и закройте файл crontab.
Заключение
В этой статье мы узнали, как устанавливать и использовать инструменты для проверки температуры жесткого диска через терминал и с помощью сценария оболочки. Мы также узнали, как автоматизировать весь процесс, создав cronjob для ежедневного выполнения сценария.