Как проверить состояние батареи через терминал?

Я хотел бы команду, которая отображает состояние батареи в терминале.

20 ответов

Приведенная ниже команда выводит много состояния и статистическую информацию о батарее. /org/... путь можно найти с помощью команды upower -e (--enumerate).

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

Пример вывода:

  native-path:          /sys/devices/LNXSYSTM:00/device:00/PNP0C0A:00/power_supply/BAT0
  vendor:               NOTEBOOK
  model:                BAT
  serial:               0001
  power supply:         yes
  updated:              Thu Feb  9 18:42:15 2012 (1 seconds ago)
  has history:          yes
  has statistics:       yes
  battery
    present:             yes
    rechargeable:        yes
    state:               charging
    energy:              22.3998 Wh
    energy-empty:        0 Wh
    energy-full:         52.6473 Wh
    energy-full-design:  62.16 Wh
    energy-rate:         31.6905 W
    voltage:             12.191 V
    time to full:        57.3 minutes
    percentage:          42.5469%
    capacity:            84.6964%
    technology:          lithium-ion
  History (charge):
    1328809335  42.547  charging
    1328809305  42.020  charging
    1328809275  41.472  charging
    1328809245  41.008  charging
  History (rate):
    1328809335  31.691  charging
    1328809305  32.323  charging
    1328809275  33.133  charging

Вы можете использовать такие инструменты, как grep, чтобы получить только ту информацию, которая вам нужна, из всего этого вывода.

Один простой способ: добавление вышеуказанной команды в

grep -E "state|to\ full|percentage"

выходы:

state:               charging
time to full:        57.3 minutes
percentage:          42.5469%

Если вам часто требуется выполнить эту команду, вы можете создать псевдоним Bash для всей команды. Пример:

alias bat='upower -i /org/freedesktop/UPower/devices/battery_BAT0| grep -E "state|to\ full|percentage"'

Добавьте это в конец вашего файла.bashrc, и вы можете в любой момент набрать "bat" в терминале.

Также есть upower -d (--dump) команда, которая отображает информацию обо всех доступных источниках питания, таких как батареи ноутбука, внешние мыши и т. д.

Дружеское напоминание: начиная с ядра Linux 2.6.24, используя /proc хранить информацию ACPI не рекомендуется и не рекомендуется.

Теперь мы рекомендуем использовать -> /sys/class/power_supply/BAT0,

ОБНОВЛЕНИЕ: Linux 3.19 и далее, мы должны посмотреть на следующий каталог -> /sys/class/power_supply/BAT1/

Например, проверка емкости и статуса в Arch Linux под управлением Linux 4.20 ->

# uname -a
Linux netbook 4.20.1-arch1-1-ARCH #1 SMP PREEMPT Wed Jan 9 20:25:43 UTC 2019 x86_64 GNU/Linux
# cat /sys/class/power_supply/BAT1/capacity
99
# cat /sys/class/power_supply/BAT1/status
Charging

Первая установка acpi запустив эту команду,

sudo apt-get install acpi

Затем запустите:

acpi

Пример вывода:

Battery 0: Discharging, 61%, 01:10:12 remaining

Или для более подробного вывода, который постоянно обновляется:

watch --interval=5 acpi -V

Выход:

 Каждые 5.0s: acpi -V Ср 8 января 15:45:35 2014

Батарея 0: полная, 100%
Адаптер 0: онлайн
Тепловой 0: хорошо, 44.0 градусов C
Тепловой 0: точка срабатывания 0 переключается в критический режим при температуре 127,0 градусов C
Тепловой 0: точка срабатывания 1 переключается в горячий режим при температуре 127,0 градусов C
Охлаждение 0: intel_powerclamp нет информации о состоянии
Охлаждение 1: pkg-temp-0 информация о состоянии отсутствует
Охлаждение 2: LCD 100 из 100
Охлаждение 3: ЖК 100 из 100
Охлаждение 4: Процессор 0 из 10
Охлаждение 5: Процессор 0 из 10
Охлаждение 6: Процессор 0 из 10
Охлаждение 7: Процессор 0 из 10
Охлаждение 8: Процессор 0 из 10
Охлаждение 9: Процессор 0 из 10
Охлаждение 10: Процессор 0 из 10
Охлаждение 11: Процессор 0 из 10 

Благодаря @Wilf это работает на моем Ubuntu 17.10 на Lenovo Yoga 720:

upower -i $(upower -e | grep '/battery') | grep --color=never -E "state|to\ full|to\ empty|percentage"

Выход:

state:               fully-charged
percentage:          100%

Или просто числовое значение с этим одним вкладышем

upower -i $(upower -e | grep '/battery') | grep --color=never -E percentage|xargs|cut -d' ' -f2|sed s/%//

Достаточно набрать команду

acpi

Для получения подробной информации вы можете ввести

acpi -V

Мне не нужно было устанавливать какие-либо пакеты раньше.

Система: Debian 7.2 64bit

Вот статья о пакете, который может проверить время автономной работы в командной строке.

В общем, все, что вам нужно сделать, это:

sudo apt-get install acpi
acpi -V

Может быть, вы можете попробовать:

cat /proc/acpi/battery/BAT0/state

cat /proc/acpi/battery/BAT0/info

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

#!/bin/bash
# Description: Battery  charge in percentage

grep POWER_SUPPLY_CAPACITY /sys/class/power_supply/BAT1/uevent

Выход для выполнения этого ( ./batpower) будет примерно таким:

POWER_SUPPLY_CAPACITY=23

NB: номер батареи может отличаться для вас, в моем случае это BAT1, но вы всегда можете узнать его, перейдя в /sys/class/power_supply или как Lekensteyn упомянул через upower -e

Моя машина: Ubuntu 13.10, 3.11.0

Замените BAT1 в приведенном выше коде bash на BAT0, если у вас более старая версия Ubuntu, т.е. 13.04 или более поздняя.

УЛУЧШЕННЫЙ СЦЕНАРИЙ: С момента моего первоначального поста, я сделал небольшое улучшение в сценарии:

#!/bin/bash
# Description: Battery  charge in percentage

if [ -f /sys/class/power_supply/BAT1/uevent ]
    then grep POWER_SUPPLY_CAPACITY /sys/class/power_supply/BAT1/uevent

else echo "Battery isn't present"

fi 

Как всегда, обратите внимание на пробелы с bash. Это все говорит само за себя. Если батарея присутствует, она появится, если нет - скрипт скажет вам об этом. Теперь перейдите к файлу.bashrc и добавьте $(batpower) к вашему приглашению. Вот мой промо:

PS1='[$(batpower)]\n${debian_chroot:+($debian_chroot)}[*\u@Ubuntu*]:\w\$ ' 

Обновите свой терминал или откройте новую вкладку или окно, и теперь вы можете постоянно контролировать заряд батареи в терминале! в том числе tty! Да хвалится сценарий!введите описание изображения здесь

Вы можете ввести:

$ acpi -i
Battery 0: Discharging, 98%, 02:51:14 remaining
Battery 0: design capacity 4400 mAh, last full capacity 3733 mAh = 84%

или же

$ upower -i $(upower -e | grep BAT)
  native-path:          BAT0
  model:                PA5109U-1BRS
  serial:               FA80
  power supply:         yes
  updated:              lun. 07 janv. 2019 03:54:18 CET (24 seconds ago)
  has history:          yes
  has statistics:       yes
  battery
    present:             yes
    rechargeable:        yes
    state:               discharging
    energy:              39,521 Wh
    energy-empty:        0 Wh
    energy-full:         40,328 Wh
    energy-full-design:  47,52 Wh
    energy-rate:         13,856 W
    voltage:             10,8 V
    time to empty:       2,9 hours
    percentage:          98%
    capacity:            84,8632%
    technology:          lithium-ion
  History (charge):
    1546829628  98,000  discharging
    1546829593  99,000  discharging
  History (rate):
    1546829658  13,856  discharging
    1546829628  14,752  discharging
    1546829597  4,806   discharging
    1546829594  2,678   discharging

Вы можете сделать это без установки дополнительных пакетов:

$ echo $((100*$(sed -n "s/remaining capacity: *\(.*\) m[AW]h/\1/p" /proc/acpi/battery/BAT0/state)/$(sed -n "s/last full capacity: *\(.*\) m[AW]h/\1/p" /proc/acpi/battery/BAT0/info)))%
94%

Эта команда взята из источника Бёбу. Это может быть хорошим кандидатом на псевдоним Bash.

Запустите следующую команду в терминале для получения подробной информации:

cat /proc/acpi/battery/BAT0/info

Если вы просто хотите, чтобы государство сделало:

cat /proc/acpi/battery/BAT0/state

Это сделало работу для меня в Ubuntu 14.04:

cat /sys/class/power_supply/BAT0/capacity

Установите Acpi, затем используйте watch постоянно контролировать через командную строку.

Например

watch --interval=5 acpi -V

покажет информацию, такую ​​как ниже, и будет обновляться каждые 5 секунд.

Батарея 0: полная, 100%, информация о скорости недоступна
Батарея 0: проектная емкость 6000 мАч, последняя полная емкость 3424 мАч = 57%

Вопрос в том, зачем кому-то это делать? Ну, у меня есть ноутбук с битым ЖК-экраном, который я сейчас использую в качестве своего битторрента.

Я собирался предложить acpi но после прочтения он не работает в 11.10, у меня появилась идея.

Пожалуйста, введите это в свой терминал: ls /proc/acpi/battery/BAT0 или же BAT1

Если вы получили "файл или каталог не найден", это не сработает.

Но, если он перечисляет файлы, то вот скрипт [вставьте его в /usr/games/ или другой каталог в $PATH и запустите sudo chmod +x /usr/games/batterypercent или как вы его называете], который я только что написал для вас, который даст вам приблизительный процент заряда батареи [см. ниже]:

(Обратите внимание, если программа еще не установлена, установите программу calc из репо: sudo apt-get install apcalc )

#!/bin/bash
math() { calc -d "$@"|tr -d ~; }
cd /proc/acpi/battery/BAT0;
max=$(grep 'design capacity:' info|awk '{print $3}')
current=$(grep 'remaining capacity:' state|awk '{print $3}')
percent=$(math "($current / $max) * 100");
echo $(echo $percent|cut -d. -f1)%

Я проверил этот скрипт на своем ноутбуке. Я говорю оценка выше, потому что acpi показывает 93% заряда батареи, а мой скрипт показывает 90% заряда батареи, поэтому попробуйте этот сценарий в зависимости от процента заряда батареи вашего графического интерфейса и посмотрите, насколько он отключен. В моем случае он, по-видимому, на 3% ниже, чем процент acpi. В этом случае вы можете добавить эту строку прямо перед последней: percent=$((percent + 3)) где "3" - это процент, на который он низок.

** В моем lenovo аккумулятор указан как BAT1, попробуйте тоже. (12.04 LTS)

Аналогичный скрипт без calc или apcalc:

#! /bin/bash
cd /proc/acpi/battery/BAT0;
max=$(grep 'design capacity:' info|awk '{print $3}')
current=$(grep 'remaining capacity:' state|awk '{print $3}')
percent=$(expr $current"00" / $max )
echo -e "Current capacity: \t$current"
echo -e "Max capacity:  \t$max"
echo -e "Percent: \t\t$percent"

Вот что я использую. Он просто смотрит на разницу между полным зарядом и текущим зарядом, а также видит, падает ли заряд, и в этом случае он использует уведомление для предупреждения пользователя.

#!/bin/bash
#
# experimental battery discharge alerter
#
nsecs=3 # loop sleep time between readings
#
ful=$(cat /sys/class/power_supply/BAT0/energy_full)
#
oldval=0
while true
do
  cur=$(cat /sys/class/power_supply/BAT0/energy_now)
  dif="$((ful - cur))"
  slope="$((cur - oldval))"
  if [ "$slope" -lt 0 ]
  then
    echo "*** discharging!"
    notify-send -u critical -i "notification-message-IM" "discharging"
  fi
 oldval=$cur
 sleep $nsecs
done

Вы можете просто запустить:upower -i $(upower -e | grep BAT)

      > upower -i $(upower -e | grep BAT)
  native-path:          BAT0
  vendor:               SMP
  model:                L19M3PF7
  serial:               3223
  power supply:         yes
  updated:              Sun 05 Mar 2023 02:33:38 PM EET (21 seconds ago)
  has history:          yes
  has statistics:       yes
  battery
    present:             yes
    rechargeable:        yes
    state:               discharging
    warning-level:       low
    energy:              5.45 Wh
    energy-empty:        0 Wh
    energy-full:         37.33 Wh
    energy-full-design:  45 Wh
    energy-rate:         16.219 W
    voltage:             10.82 V
    charge-cycles:       917
    time to empty:       20.1 minutes
    percentage:          14%
    capacity:            82.9556%
    technology:          lithium-polymer
    icon-name:          'battery-caution-symbolic'
  History (charge):
    1678019588  14.000  discharging
  History (rate):
    1678019618  16.219  discharging
    1678019588  14.814  discharging
    1678019558  13.941  discharging
    1678019528  12.350  discharging

Это поможет не всем, но помогло мне - я использую byobu всякий раз, когда использую терминал, и батарея - это один из вариантов панели уведомлений о состоянии.

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

upower -i $(upower -e | grep 'BAT') | grep -E "state|to\ full|percentage" | awk '/perc/{print $2}'

65%

в случае, если вам нужно извлечь это значение

cat /proc/acpi/ac_adapter/AC/state
Другие вопросы по тегам