Как узнать температуру процессора в Armbian из консоли

Перегрев SoC на одноплатнике с Armbian чаще всего проявляется не сразу: сначала падает частота процессора из-за троттлинга, и система начинает «тормозить» без видимой причины. Проверить температуру из консоли можно за секунды — достаточно одной команды, и для этого не нужно ставить графические утилиты.

В этой статье разберём все рабочие способы: от встроенной утилиты armbianmonitor до чтения данных напрямую из файловой системы sysfs. Материал подходит для любых плат на базе Allwinner, Rockchip, Amlogic и других ARM-процессоров, где установлена Armbian.

Быстрый способ: утилита armbianmonitor

Самый простой метод — встроенная утилита armbianmonitor, которая входит в состав системы по умолчанию. Она показывает температуру SoC, текущую частоту ядер, загрузку и напряжение в одном окне.

Запустите мониторинг в реальном времени командой:

armbianmonitor -m

Вывод будет обновляться автоматически. В строке вы увидите текущую частоту CPU, температуру в градусах Цельсия и нагрузку. Для выхода нажмите Ctrl+C.

Если нужен разовый снимок состояния без постоянного обновления, используйте:

armbianmonitor -u

Ключ -m — самый информативный вариант для диагностики троттлинга: если частота падает при росте температуры, значит, процессор уже упёрся в тепловой лимит.

Чтение температуры из thermal_zone

Ядро Linux публикует данные термодатчиков через виртуальную файловую систему sysfs. Это универсальный способ, который работает даже в минимальных сборках без дополнительных утилит.

Основная команда выглядит так:

cat /sys/class/thermal/thermal_zone0/temp

Обратите внимание: значение выводится в тысячных долях градуса. Например, 45234 означает примерно 45,2 °C. Чтобы получить читаемый результат, разделите число на 1000:

echo "$(( $(cat /sys/class/thermal/thermal_zone0/temp) / 1000 )) °C"

Зон может быть несколько — thermal_zone0, thermal_zone1 и так далее. Узнать, какая зона к чему относится, поможет файл type в том же каталоге:

cat /sys/class/thermal/thermal_zone0/type
  • 🌡️ soc-thermal или похожее имя — температура самого процессора (SoC);
  • 🔥 gpu-thermal — датчик графического ядра, если он есть;
  • 📦 board-thermal — датчик на плате, встречается не на всех моделях;
  • 💾 отдельные зоны могут отвечать за NVMe-накопители или PMIC.

⚠️ Внимание: количество и назначение thermal-зон зависят от конкретной платы и версии ядра. Не полагайтесь на то, что зона 0 — это всегда CPU: проверьте содержимое файла type для каждой зоны.

☑️ Диагностика перегрева за 5 шагов

Выполнено: 0 / 5

Мониторинг в реальном времени через watch

Когда нужно наблюдать динамику нагрева под нагрузкой, удобно зациклить чтение датчика командой watch. Так вы увидите, как быстро растёт температура при запуске тяжёлой задачи.

watch -n 1 'cat /sys/class/thermal/thermal_zone0/temp'

Число после -n — интервал обновления в секундах. Для более наглядного вывода в градусах можно усложнить конструкцию:

watch -n 2 'echo "CPU: $(( $(cat /sys/class/thermal/thermal_zone0/temp) / 1000 ))°C"'

Чтобы создать нагрузку и проверить систему охлаждения, в отдельном терминале запустите стресс-тест — например, stress-ng --cpu 0 (пакет stress-ng устанавливается через apt). Наблюдайте за ростом температуры и поведением частоты.

📊 Какая температура вашего SoC под нагрузкой?
До 50 °C
50–65 °C
65–80 °C
Выше 80 °C — есть проблемы

Утилита lm-sensors

Пакет lm-sensors — классический инструмент Linux для работы с аппаратными датчиками. В Armbian он тоже доступен, хотя на ARM-платах его возможности зависят от того, какие датчики описаны в дереве устройств ядра.

Установка и запуск:

sudo apt install lm-sensors

sensors

Команда sensors выведет список обнаруженных чипов и их показания: температуру ядер, напряжения и, если поддерживается, скорость вентилятора. В отличие от ручного чтения sysfs, здесь значения уже приведены к удобному виду.

Запускать sensors-detect на ARM-платах обычно не требуется — датчики SoC подхватываются ядром автоматически. Если sensors показывает пустой вывод, это не неисправность: просто для вашей платы данные доступны только через thermal_zone.

Что делать, если sensors ничего не показывает

Это нормально для многих ARM-плат. Используйте armbianmonitor -m или чтение /sys/class/thermal/ — эти методы опираются на драйверы ядра и работают практически всегда.

Какая температура считается нормальной

Точные пороги зависят от конкретного чипа, поэтому сверяйтесь с документацией на ваш SoC. Тем не менее общие ориентиры для типичных ARM-процессоров выглядят так:

ДиапазонОценкаРекомендация
До 50 °CОтличноОхлаждение справляется, ничего менять не нужно
50–65 °CНорма под нагрузкойДопустимо для длительной работы
65–80 °CПовышенный нагревПроверьте радиатор и вентиляцию корпуса
Выше 80 °CРиск троттлингаНужно активное охлаждение или снижение нагрузки

Признак того, что температура уже влияет на производительность, — троттлинг: ядро автоматически снижает частоту, чтобы защитить кристалл. В выводе armbianmonitor -m это видно по падению MHz при росте градусов. Точный порог срабатывания задан в настройках ядра под конкретный чип.

⚠️ Внимание: постоянная работа на предельных температурах сокращает срок службы не только процессора, но и расположенных рядом компонентов — eMMC, памяти и стабилизаторов питания. Не игнорируйте регулярный нагрев выше 75–80 °C.

Вывод температуры в скриптах и по SSH

Для удалённого мониторинга удобно выводить температуру одной строкой, которую легко обработать скриптом. Например, команда для логирования:

echo "$(date '+%H:%M:%S') $(cat /sys/class/thermal/thermal_zone0/temp)"

Такую строку можно дописывать в файл по cron, чтобы построить историю нагрева за сутки. Это поможет понять, в какие часы и при каких задачах плата перегревается.

Если вы подключаетесь по SSH, все перечисленные команды работают точно так же — никаких графических инструментов не требуется. Для постоянного наблюдения за несколькими платами есть смысл настроить сбор метрик через Netdata или подобную систему, но для разовой диагностики достаточно консоли.

⚠️ Внимание: не полагайтесь на внешний вид платы или температуру корпуса «на ощупь» — корпус может оставаться прохладным, пока кристалл SoC перегрет. Доверять нужно только показаниям встроенных датчиков.

Частые вопросы

Почему armbianmonitor не найден в моей системе?

Утилита входит в стандартную поставку Armbian. Если команда не найдена, возможно, у вас неофициальная сборка или пакет был удалён. Проверьте наличие пакета через dpkg -l | grep armbian или используйте чтение thermal_zone — оно работает в любом случае.

Температура показывается как большое число, например 52180. Это ошибка?

Нет, это штатный формат sysfs: значение указано в тысячных долях градуса Цельсия. Разделите его на 1000 — получите 52,18 °C.

Можно ли узнать температуру без прав root?

Да. Файлы в /sys/class/thermal/ доступны на чтение обычному пользователю, и armbianmonitor -m тоже работает без sudo.

Почему под нагрузкой падает частота процессора?

Это троттлинг — защитный механизм ядра, который снижает частоту при достижении температурного порога. Проверьте охлаждение: радиатор, термопрокладку и продуваемость корпуса.

Есть ли датчик температуры у NVMe-диска?

Часто да, но он выводится отдельно — через smartctl -a /dev/nvme0 из пакета smartmontools или как отдельная thermal-зона. Проверьте файл type в каждой зоне, чтобы найти нужную.