Как проверить температуру процессора в Linux
Чтобы быстро узнать температуру процессора в Linux, используйте утилиту sensors из пакета lm-sensors или считайте данные напрямую из файловой системы /sys/class/thermal. Для большинства дистрибутивов достаточно установить пакет lm-sensors, запустить автонастройку командой sudo sensors-detect и выполнить sensors для вывода показаний всех датчиков.
Контроль температурного режима критически важен для предотвращения троттлинга (снижения частоты при перегреве) и продления срока службы оборудования. В этой статье разберем надежные способы мониторинга: от быстрых команд в терминале до настройки графических индикаторов.
Подготовка: установка и настройка lm-sensors
Утилита lm-sensors — стандарт де-факто для чтения данных с аппаратных датчиков в Linux. Она поддерживает большинство современных материнских плат и процессоров (Intel и AMD).
Установка пакета
Команды зависят от вашего дистрибутива:
- Debian / Ubuntu / Mint:
sudo apt update
sudo apt install lm-sensors
```
* **Fedora / RHEL / CentOS:**
```bash
sudo dnf install lm_sensors
```
* **Arch Linux / Manjaro:**
```bash
sudo pacman -S lm_sensors
```
### Настройка датчиков
После установки необходимо просканировать оборудование и загрузить нужные модули ядра. Выполните команду:
```bash
sudo sensors-detect
Скрипт задаст несколько вопросов. Для безопасности и простоты на все вопросы можно отвечать «Yes» (или просто нажимать Enter, если ответ по умолчанию положительный). В конце скрипт предложит добавить модули в автозагрузку — согласитесь.
Если вы не хотите перезагружаться, загрузите модули вручную командой, которую выдаст sensors-detect в конце работы (обычно это service kmod start или перечисление модулей через modprobe).
Способ 1: Просмотр температуры в терминале (sensors)
После настройки выполните простую команду:
sensors
Вы увидите подробный отчет. Ищите секции, связанные с процессором (часто они называются coretemp, k10temp для AMD или nct6775 для супервизоров на материнской плате).
Пример вывода для Intel:
coretemp-isa-0000
Adapter: ISA adapter
Package id 0: +45.0°C (high = +80.0°C, crit = +100.0°C)
Core 0: +42.0°C (high = +80.0°C, crit = +100.0°C)
Core 1: +44.0°C (high = +80.0°C, crit = +100.0°C)
- Package id: Общая температура процессора.
- Core X: Температура конкретного ядра.
- high/crit: Пороговые значения, при которых срабатывает защита.
Фильтрация вывода
Если информации слишком много, отфильтруйте только данные о ядрах:
sensors | grep -E "Core|Package"
Для вывода только текущих значений без порогов удобно использовать awk:
sensors | grep "Core" | awk '{print $1, $3}'
Способ 2: Чтение данных через sysfs (без установки программ)
В ядре Linux данные с термодатчиков доступны в виртуальной файловой системе sysfs. Этот метод работает «из коробки» в большинстве современных дистрибутивов и идеален для легких скриптов.
Данные хранятся в файлах /sys/class/thermal/thermal_zone*/temp. Значения указаны в миллиградусах Цельсия (например, 45000 = 45.0°C).
Чтобы вывести температуру всех зон в читаемом виде:
for zone in /sys/class/thermal/thermal_zone*; do
type=$(cat $zone/type)
temp=$(cat $zone/temp)
echo "$type: $(($temp / 1000))°C"
done
Зоны thermal_zone могут относиться не только к CPU, но и к чипсету, GPU или аккумулятору ноутбука. Ориентируйтесь на названия типов (например, x86_pkg_temp или acpitz).
Способ 3: Графический мониторинг (Psensor)
Для десктопных пользователей удобны приложения с визуализацией графиков и уведомлениями. Одно из лучших решений — Psensor.
Установка и запуск
- Ubuntu/Debian:
sudo apt install psensor - Fedora:
sudo dnf install psensor
После запуска Psensor автоматически определит доступные датчики (требуется установленный lm-sensors).
Преимущества:
- График изменения температуры в реальном времени.
- Отображение температуры в системном трее.
- Настройка оповещений: программа может показать уведомление или воспроизвести звук, если температура превысит заданный лимит (например, 85°C).
Автоматизация: скрипт для проверки перегрева
Если вам нужно периодически проверять температуру и получать предупреждение только при опасном нагреве, используйте простой bash-скрипт.
Создайте файл check_temp.sh:
#!/bin/bash
# Максимально допустимая температура
MAX_TEMP=80
# Получаем максимальную температуру среди всех ядер
CURRENT_TEMP=$(sensors | grep "Core" | awk '{print $3}' | sed 's/+//' | sed 's/°C//' | sort -n | tail -1)
# Округляем до целого
CURRENT_TEMP_INT=${CURRENT_TEMP%.*}
if [ "$CURRENT_TEMP_INT" -ge "$MAX_TEMP" ]; then
echo "ВНИМАНИЕ: Высокая температура CPU! ${CURRENT_TEMP}°C"
# Здесь можно добавить отправку уведомления, например:
# notify-send "Перегрев CPU" "Температура: ${CURRENT_TEMP}°C"
else
echo "Температура в норме: ${CURRENT_TEMP}°C"
fi
Не забудьте сделать скрипт исполняемым: chmod +x check_temp.sh. Его можно добавить в cron для проверки каждые 5 минут.
Частые ошибки и проблемы
| Проблема | Причина и решение |
|---|---|
| Показания 0°C или отсутствуют | Датчики не определены. Перезапустите sudo sensors-detect и убедитесь, что модули загружены. Проверьте `dmesg |
| Неверные значения (например, -127°C) | Конфликт драйверов или неподдерживаемое оборудование. Попробуйте обновить ядро (uname -r) или исключите лишние модули в конфигурации lm-sensors. |
| Разница показаний в разных утилитах | Разные утилиты могут читать разные физические датчики (ядро vs корпус). Ориентируйтесь на Package id или максимальное значение среди ядер. |
| Нет прав доступа к /sys/... | Обычно чтение открыто для всех, но запись ограничена. Если скрипт не работает, проверьте права доступа, хотя для cat они редко требуются. |
FAQ
Какая температура считается нормальной для процессора в Linux? В простое (idle) нормальная температура составляет 30–45°C. Под нагрузкой (игры, рендеринг) до 70–80°C является допустимой для большинства современных CPU. Критической обычно считается температура выше 90–100°C, когда начинается троттлинг.
Можно ли проверить температуру видеокарты теми же командами?
lm-sensors иногда показывает температуру GPU, если она интегрирована в процессор (iGPU). Для дискретных видеокарт NVIDIA используйте nvidia-smi, для AMD — radeontop или sensors (если поддерживается драйвером amdgpu).
Почему sensors показывает температуру ниже, чем в BIOS?
В BIOS нагрузка на процессор минимальна, но методы измерения могут отличаться. Также в Linux данные обновляются динамически. Разница в 2–5 градусов допустима. Если разница огромна, проверьте версию микрокода процессора и обновление BIOS.
Как узнать температуру на сервере без GUI?
Используйте sensors в сочетании с системами мониторинга вроде Zabbix, Prometheus (node_exporter собирает данные из /sys/class/thermal) или простыми скриптами логирования в текстовый файл.