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

Быстрые ссылки
- 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 и т. п.

Важно: оставшееся время основано на текущем энергопотреблении. При увеличении нагрузки время сокращается; при выключенном экране или простое оно может увеличиться.
Пример вывода при подключённом адаптере отличается: появится Time to Full и иконка сменит имя на что-то вроде battery-full-charging-symbolic.
Чтобы посмотреть состояние адаптера:
upower -i /org/freedesktop/UPower/devices/line_power_ACADПоле Online покажет yes (подключён) или no (отключён).


Совет: если 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
Такие простые цифровые значения идеально подходят для автоматизации: их легко читать в скриптах и сравнивать.
Пример корректного 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”. Утилита полезна для быстрого чтения вручную и для парсинга в скриптах.

Когда какой инструмент использовать — краткая памятка
- Если у вас рабочее окружение с 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)
- Протестируйте на целевой машине: выполните ls /sys/class/power_supply/ и убедитесь, какие имена используются.
- Отредактируйте пути в скрипте (BAT_PATH, AC_PATH).
- Добавьте логирование (stdout/файл) и настройте ротацию логов, если задача длительная.
- Добавьте скрипт в crontab или systemd timer с корректной обработкой кода выхода.
- Тестируйте сценарии: отключён адаптер + низкий заряд; отключён адаптер + высокий заряд; подключён адаптер.
Чек-листы по ролям
Системный администратор
- Проверить, видны ли устройства в /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
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента