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

273

Мне нужна команда, которая проверяет состояние батареи через терминал

    
задан Joe 20.10.2011 в 03:24
источник

18 ответов

287

Приведенная ниже команда выводит много статусных и статистических данных о батарее. Путь /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 ), которая отображает информацию обо всех доступных ресурсах питания, таких как батареи для ноутбуков, внешние мыши и т. д.

    
ответ дан Lekensteyn 09.02.2012 в 18:42
104

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

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

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

Например емкость - > cat /sys/class/power_supply/BAT1/capacity status - > cat /sys/class/power_supply/BAT1/status

    
ответ дан Terry Wang 17.06.2013 в 10:35
59

Сначала установите acpi , выполнив эту команду,

sudo apt-get install acpi

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

acpi

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

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

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

watch --interval=5 acpi -V

Вывод:

Every 5.0s: acpi -V                                     Wed Jan  8 15:45:35 2014

Battery 0: Full, 100%
Adapter 0: on-line
Thermal 0: ok, 44.0 degrees C
Thermal 0: trip point 0 switches to mode critical at temperature 127.0 degrees C
Thermal 0: trip point 1 switches to mode hot at temperature 127.0 degrees C
Cooling 0: intel_powerclamp no state information available
Cooling 1: pkg-temp-0 no state information available
Cooling 2: LCD 100 of 100
Cooling 3: LCD 100 of 100
Cooling 4: Processor 0 of 10
Cooling 5: Processor 0 of 10
Cooling 6: Processor 0 of 10
Cooling 7: Processor 0 of 10
Cooling 8: Processor 0 of 10
Cooling 9: Processor 0 of 10
Cooling 10: Processor 0 of 10
Cooling 11: Processor 0 of 10
    
ответ дан Suhaib 24.11.2012 в 21:20
26

Благодаря @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/%//
    
ответ дан rubo77 02.07.2014 в 10:56
23

Достаточно ввести команду

acpi

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

acpi -V

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

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

    
ответ дан user309404 26.07.2014 в 16:36
15

Возможно, вы можете попробовать:

cat /proc/acpi/battery/BAT0/state

cat /proc/acpi/battery/BAT0/info

    
ответ дан Mariano L 20.10.2011 в 07:36
15

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

В принципе, все, что вам нужно сделать, это:

sudo apt-get install acpi
acpi -V
    
ответ дан josh-fuggle 10.06.2011 в 06:57
11

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

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

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

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

POWER_SUPPLY_CAPACITY=23

N.B. : номер batery может быть другим для вас, в моем случае это BAT1, но вы всегда можете найти его с помощью cd'ing / sys / class / power_supply или, как упоминал Лекенштейн через upower -e

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

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

УЛУЧШЕННЫЙ SCRIPT: С моего оригинального сообщения я сделал небольшое улучшение для скрипта:

#!/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) в свою подсказку. Вот мой promt:

PS1='[$(batpower)]\n${debian_chroot:+($debian_chroot)}[*\[email protected]*]:\w\$ ' 

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

    
ответ дан Sergiy Kolodyazhnyy 23.07.2014 в 05:23
9

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

cat /proc/acpi/battery/BAT0/info

Если вы просто хотите, чтобы состояние выполнялось:

cat /proc/acpi/battery/BAT0/state
    
ответ дан MEM 19.04.2011 в 14:20
9

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

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

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

    
ответ дан ændrük 10.06.2011 в 07:35
5

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

например.

watch --interval=5 acpi -V

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

Battery 0: Full, 100%, rate information unavailable
Battery 0: design capacity 6000 mAh, last full capacity 3424 mAh = 57%

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

    
ответ дан iceburn 30.08.2011 в 22:33
5

Это работало для меня в ubuntu 14.04:

cat /sys/class/power_supply/BAT0/capacity
    
ответ дан the_saint 23.11.2014 в 14:29
4

Я собирался предложить 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 "[email protected]"|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)

    
ответ дан Matt 20.10.2011 в 04:42
1

Подобный скрипт без 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"
    
ответ дан xerostomus 15.11.2014 в 19:24
1

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

#!/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
    
ответ дан Mark Simmons 28.02.2016 в 13:47
0

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

    
ответ дан sheepeatingtaz 07.01.2016 в 09:41
0

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

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

65%

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

    
ответ дан intika 25.03.2018 в 13:56
-2
cat /proc/acpi/ac_adapter/AC/state
    
ответ дан Todd Harris 19.04.2011 в 14:03
-2

Это работает:

cat /proc/acpi/ac_adapter/AC0/state
    
ответ дан xerostomus 15.11.2014 в 18:35