Гид по технологиям

Проверка батареи ноутбука в Linux через командную строку

• 8 min read • Linux • Обновлено 20 Nov 2025
Проверить батарею ноутбука в Linux
Проверить батарею ноутбука в Linux

TL;DR

  • Узнайте состояние батареи и наличие питания через команды upower, acpi и файлы в /sys/class/power_supply/.
  • Подходит для локальных и удалённых проверок (SSH) и для автоматизации в скриптах: проверяйте файл ACAD/online и BAT?/capacity и действуйте по порогу.

Linux ноутбук с открытой оболочкой bash

Быстрые ссылки

  • The Laptop Battery
  • Checking Your Battery With upower
  • Examining the Contents of /sys/class/power_supply/
  • Checking the Battery with acpi
  • Knowledge is Power

Введение

Ноутбуки дают свободу работы в любом месте — но только пока есть заряд в батарее. Командная строка Linux позволяет быстро и программно получить сведения о состоянии питания: подключён ли адаптер, какой процент заряда, сколько времени осталось до разряда или полного заряда. Это полезно на машинах без GUI, при удалённом доступе по SSH или в автоматизированных задачах (резервное копирование, обновления и т. п.).

Ниже — практическое руководство по трём основным способам проверки батареи: через upower, через sysfs (/sys/class/power_supply) и через утилиту acpi. Также вы найдёте готовые примеры скриптов, руководства по интеграции в расписания задач и чек-листы для разных ролей.

Пояснение терминов

  • upower — демон и утилита для управления источниками питания в средах рабочего стола (однострочное определение устройств и подробная информация).
  • sysfs (/sys/class/power_supply) — виртуальная файловая система ядра Linux с сырой информацией о питании (цифры удобны для скриптов).
  • acpi — компактная утилита для вывода информации по ACPI: статус адаптера, заряд батареи и дополнительные сведения.

The Laptop Battery

Отключённый от сети ноутбук полностью зависит от батареи: экран, диски, сеть и процессор потребляют ток. Со временем ёмкость батареи уменьшается; «новая» батарея уже может не давать точных значений, заявленных в маркетинге. Поэтому мониторинг заряда — обычная часть эксплуатации.

Производители спорят, вредно ли постоянно держать ноутбук подключённым. Если вы избегаете постоянного подключения, ваш ноутбук, вероятно, не будет всегда на 100% при выходе “в поле”.

При удалённом доступе (SSH) или при работе без полноценного окружения рабочего стола проверка питания по командной строке особенно важна.

Проверка батареи с помощью upower

upower показывает имеющиеся источники питания и даёт детальную информацию по каждому устройству.

Перечислить все обнаруженные устройства можно опцией -e (enumerate):

upower -e

Список обычно содержит устройство сетевого адаптера (line_power или ACAD), одну или несколько батарей (BAT0, BAT1 и т. п.) и составное дисплейное устройство DisplayDevice (иконка в DE). Нумерация батарей зависит от производителя: иногда BAT0, иногда BAT1.

Чтобы получить подробную информацию по конкретной батарее, передайте полный дескриптор:

upower -i /org/freedesktop/UPower/devices/battery_BAT1

Ключевые поля:

  • Time to Empty / Time to Full — оставшееся время до разряда или полного заряда (зависит от текущей нагрузки).
  • Percentage — процент заряда батареи.
  • State — charging, discharging, fully-charged и т. п.

Вывод upower при отключенном адаптере питания

Важно: оставшееся время основано на текущем энергопотреблении. При увеличении нагрузки время сокращается; при выключенном экране или простое оно может увеличиться.

Пример вывода при подключённом адаптере отличается: появится Time to Full и иконка сменит имя на что-то вроде battery-full-charging-symbolic.

Чтобы посмотреть состояние адаптера:

upower -i /org/freedesktop/UPower/devices/line_power_ACAD

Поле Online покажет yes (подключён) или no (отключён).

Проверка адаптера питания через upower с подключённым адаптером

Проверка адаптера питания через upower с отключённым адаптером

Совет: если upower не установлен, установите пакет (обычно называется upower или upower-glib) через менеджер пакетов вашей системы.

Содержимое /sys/class/power_supply/ и почему это удобно для скриптов

Ядро Linux экспонирует информацию о питании в виде файлов в /sys/class/power_supply/. Для большинства ноутбуков там будет директория для адаптера (ACAD, AC, или line_power) и для батареи (BAT0, BAT1 и т. п.). Примеры ключевых файлов:

  • /sys/class/power_supply/ACAD/online — 1 если адаптер подключён, 0 если нет.
  • /sys/class/power_supply/BAT1/capacity — целое число с текущим процентом заряда (0–100).
  • /sys/class/power_supply/BAT1/status — charging, discharging, full.

Просмотр списков и значений:

ls /sys/class/power_supply/
cat /sys/class/power_supply/ACAD/online
cat /sys/class/power_supply/BAT1/capacity

Проверка файлов online и capacity с помощью cat

Такие простые цифровые значения идеально подходят для автоматизации: их легко читать в скриптах и сравнивать.

Пример корректного Bash-скрипта для принятия решения

Ниже — исправленный и надёжный пример скрипта, который запускает резервное копирование только если есть питание от сети или батарея выше порога (по умолчанию 70%). Сохраните как battery.sh и замените пути BAT1/ACAD, если они отличаются на вашей машине.

#!/bin/bash

# Путь к файлам power_supply — скорректируйте при необходимости
BAT_PATH="/sys/class/power_supply/BAT1"
AC_PATH="/sys/class/power_supply/ACAD"

# Порог для запуска задачи, когда питания от сети нет
MIN_CHARGE=70

# Безопасное чтение значений
if [[ -r "$AC_PATH/online" ]]; then
  ac_adapter=$(cat "$AC_PATH/online")
else
  echo "Не удалось прочитать $AC_PATH/online" >&2
  exit 2
fi

if [[ -r "$BAT_PATH/capacity" ]]; then
  charge_level=$(cat "$BAT_PATH/capacity")
else
  echo "Не удалось прочитать $BAT_PATH/capacity" >&2
  exit 2
fi

# Логика: если адаптер подключён (1) — запускаем; иначе сравниваем заряд
if [[ "$ac_adapter" -eq 1 ]]; then
  echo "На сети: запускаем резервное копирование."
  # Здесь вызываем вашу команду резервного копирования
  # /usr/local/bin/backup.sh
  exit 0
else
  if [[ "$charge_level" -ge $MIN_CHARGE ]]; then
    echo "Батарея достаточна ($charge_level%), запускаем резервное копирование."
    # /usr/local/bin/backup.sh
    exit 0
  else
    echo "Недостаточно заряда для резервного копирования: $charge_level%" >&2
    exit 1
  fi
fi

Права на выполнение:

chmod +x battery.sh
./battery.sh

Ключевые улучшения по сравнению с упрощёнными примерами: проверка доступности файлов, понятные коды выхода и настраиваемый порог.

Проверка батареи с помощью acpi

acpi — простая утилита для вывода статуса ACPI-устройств. Если не установлена, её легко добавить в систему.

Установка (примеры для популярных дистрибутивов):

sudo apt install acpi         # Ubuntu, Debian
sudo dnf install acpi         # Fedora
sudo pacman -Sy acpi          # Manjaro

Команды:

acpi -a    # статус адаптера
acpi -b    # статус батареи
acpi -bi   # батарея + доп. информация

acpi выдаёт удобочитаемый вывод типа “Battery 0: Discharging, 42%, 02:31:15 remaining”. Утилита полезна для быстрого чтения вручную и для парсинга в скриптах.

Проверка адаптера и батареи с помощью acpi

Когда какой инструмент использовать — краткая памятка

  • Если у вас рабочее окружение с UPower (обычно в DE): upower — полная и понятная информация.
  • Для простых автоматических решений и скриптов: /sys/class/power_supply — наиболее стабильный и простой для парсинга источник.
  • Если нужно быстро посмотреть вручную на текстовом терминале: acpi — лёгкая и удобная утилита.

Советы по совместимости и типичные подводные камни

  • Имена директорий в /sys/class/power_supply/ зависят от модели: ACAD, AC, ACPI0003, BAT0, BAT1 и т. п. Проверьте ls, прежде чем подключать скрипт.
  • Некоторые серверные или минимальные сборки не содержат upower или acpi по умолчанию. Используйте sysfs как fallback.
  • Правильные разрешения: чтение файлов sysfs обычно возможно обычным пользователям, но в некоторых системах нужны дополнительные права.
  • Для стабильных результатов в скриптах используйте явные проверки существования файлов и корректных числовых значений.

Критерии приёмки

  • Скрипт возвращает код 0 при успешном запуске запланированной задачи и код !=0 при отказе.
  • Скрипт корректно определяет состояние адаптера и батареи на тестовой машине с переменными комбинациями (адаптер подключён/отключён, заряд выше/ниже порога).
  • Логи/статусы содержат читаемое сообщение о причине запуска/отказа.

Рекомендации по интеграции (SOP)

  1. Протестируйте на целевой машине: выполните ls /sys/class/power_supply/ и убедитесь, какие имена используются.
  2. Отредактируйте пути в скрипте (BAT_PATH, AC_PATH).
  3. Добавьте логирование (stdout/файл) и настройте ротацию логов, если задача длительная.
  4. Добавьте скрипт в crontab или systemd timer с корректной обработкой кода выхода.
  5. Тестируйте сценарии: отключён адаптер + низкий заряд; отключён адаптер + высокий заряд; подключён адаптер.

Чек-листы по ролям

  • Системный администратор

    • Проверить, видны ли устройства в /sys/class/power_supply/
    • Убедиться, что скрипт имеет права и корректные пути
    • Настроить cron/systemd timer и уведомления в случае отказа
  • Разработчик приложений/скриптов

    • Парсинг значения capacity как integer
    • Обработка ошибок чтения файлов
    • Добавить тесты, покрывающие все сочетания состояний питания
  • Удалённый пользователь (SSH)

    • Выполнить upower -e и upower -i по найденной батарее
    • Или cat /sys/class/power_supply/*/capacity для быстрого просмотра

Тестовые сценарии и критерии приёмки

  • Тест 1: адаптер подключён -> скрипт должен вернуть код 0 и сообщение “На сети”.
  • Тест 2: адаптер отключён, заряд >= MIN_CHARGE -> код 0 и сообщение о достаточном заряде.
  • Тест 3: адаптер отключён, заряд < MIN_CHARGE -> код 1 и сообщение об ошибке.
  • Тест 4: отсутствует файл online или capacity -> код 2 и сообщение об ошибке чтения.

Альтернативные подходы и инструменты

  • TLP — утилита для управления питанием и продления времени работы батареи; не даёт «стандартный» вывод статуса, но полезна для оптимизации.
  • upowerd + DBus — для приложений рабочего стола удобнее слушать события через DBus, а не опрашивать каждые N секунд.
  • vendor tools — некоторые производители (Lenovo, Dell) поставляют свои утилиты для диагностики батареи и параметров калибровки.

Ментальные модели и эвристики

  • Значение capacity — мгновенное состояние, а не гарантированное время выполнения задач.
  • Time to Empty/Full указывает на расчёт при текущей нагрузке; для долгих задач оставляйте запас.
  • Если батарея старая, задавайте более высокий порог для критически важных задач.

Диагностическое дерево принятия решения

flowchart TD
  A[Начало: нужно выполнить задача] --> B{Адаптер подключён?}
  B -- Да --> C[Запустить задачу]
  B -- Нет --> D[Считать /sys/.../capacity]
  D --> E{Заряд >= порог?}
  E -- Да --> C
  E -- Нет --> F[Отложить/Отключить задачу и уведомить]
  C --> G[Лог: выполнение]
  F --> H[Лог: недостаточно заряда]

Безопасность и приватность

  • Информация о состоянии питания не относится к персональным данным, поэтому проблем с GDPR обычно не возникает.
  • Однако логи, содержащие временные метки и имена хостов, могут быть чувствительными: храните и передавайте их согласно политике вашей организации.

Глоссарий (1 строчка на термин)

  • UPower — демон и API для управления источниками питания в Linux.
  • sysfs — виртуальная файловая система ядра, предоставляющая информацию об аппаратных ресурсах.
  • ACPI — интерфейс, описывающий конфигурацию и управление питанием.

Когда это может не работать

  • На некоторых редких встраиваемых платформах или очень старых системах файлы в /sys/class/power_supply/ могут отсутствовать.
  • В случае неисправной батареи показания capacity и status могут быть некорректными.
  • Если доступ к файлам ограничён, обычный пользователь может не прочитать значения — потребуется отладка прав.

Итог

Проверка состояния батареи в Linux — простая и мощная вещь: upower удобен для интерактивного использования, acpi — для быстрого текстового вывода, а /sys/class/power_supply/ даёт наиболее надёжные числовые данные для автоматизации. Используйте проверенные скрипты с обработкой ошибок и настройте пороги под ваши задачи, чтобы избежать неприятных прерываний работы.

Важное: перед автоматизацией на нескольких машинах убедитесь, что имена устройств в /sys совпадают с теми, что использованы в ваших скриптах.

Связанные материалы: How to Maximize Your Linux Laptop’s Battery Life

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро