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

320

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

Джо
источник
29
$ upower -i $(upower -e | grep 'BAT') | grep -E "state|to\ full|percentage"
Джейк Бергер

Ответы:

335

Приведенная ниже команда выводит много состояния и статистическую информацию о батарее. /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
источник
9
upower --enumerateможет быть полезно, если вы не уверены, как использовать upower.
Landroni
5
@landroni И сокращенная опция заключается в том upower -e, что эта команда перечисляет доступные пути для upower -i .... Если вы ленивы и просто хотите получить список всех устройств, используйте upower -d( upower --dump).
Лекенстейн
1
На самом деле. Я думаю, что это было бы полезным дополнением к самому ответу, так как, когда я впервые попытался использовать, upowerя сразу заблудился.
Landroni
1
@landroni Хорошо, я обновил ответ. Не стесняйтесь редактировать его, если у вас есть больше связанных дополнений.
Лекенстейн
8
Еще одна строчка может бытьupower -i $(upower -e | grep BAT) | grep --color=never -E "state|to\ full|to\ empty|percentage"
Уилф
124

Дружеское напоминание : начиная с ядра 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
Терри Ван
источник
1
В частности, /sys/class/power_supply/BAT0/capacityкажется, чтобы показать текущий процент заряда.
thomasa88
Устаревший ... это все еще работает?
neverMind9
3
+1, это должен быть принятый ответ, поскольку он не зависит от дополнительного программного обеспечения, которое может быть не установлено, и не требуется для ответа на этот вопрос. @ neverMind9: Я не знаю, что вы имеете в виду /proc, устарела, но /sysотлично работает для меня, даже в ядре 4.20.
Comfreak
1
@ Comfreak работает для меня, на самом деле.
neverMind9
1
Мало того, что это должен быть ответ получателя, но получение данных может быть достигнуто с помощью любого языка программирования, который имеет readфункцию, подобную PHP, $capacity = trim(file_get_contents("/sys/class/power_supply/BAT0/capacity"));что делает его очень простым и не зависящим от каких-либо внешних зависимостей.
Амин НАИРИ
67

Сначала установите с 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: LCD 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
Suhaib
источник
29

Благодаря @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
источник
На Fedora 23 мне пришлось работать с grep batteryвместо того, BATчтобы заставить его работать. Я нашел это с upower --enumerate.
Эрик
grep для batteryработ в Ubuntu, поэтому я изменил его сBAT
rubo77
28

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

acpi

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

acpi -V

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

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

user309404
источник
19

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

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

sudo apt-get install acpi
acpi -V
мистифицировать-fuggle
источник
18

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

cat /proc/acpi/battery/BAT0/state

cat /proc/acpi/battery/BAT0/info

Мариано Л
источник
23
использование /procдля хранения информации ACPI не рекомендуется и не рекомендуется с 2.6.24. Теперь это в /sys/class/power_supply/BAT0.
Терри Ван
14

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

#!/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! Да хвалится сценарий! введите описание изображения здесь

Сергей Колодяжный
источник
Вы должны проверить /sys/class/power_supply/BAT0и /sys/class/power_supply/BAT1... Это может быть либо. И вы должны использовать этот путь ( /sys/class/power_supply/BAT#).
Dylnmc
В моем нетбуке Ubuntu 12.04 (после перехода на BAT0) у меня нет строки POWER_SUPPLY_CAPACITY. Похоже, я мог бы рассчитать его, исходя из значений POWER_SUPPLY_CHARGE_FULL и POWER_SUPPLY_CHARGE_NOW.
mwfearnley
Проголосовал, но Бэтмен (Battery Manager) подсознательно имеет более приятное звучание, чем Batpower :) Если серьезно, интересно, что вы писали в AskUbuntu в 2014 году, и насколько вы отличаетесь сегодня.
WinEunuuchs2Unix
@ WinEunuuuchs2Unix Да, я немного изменился с тех пор, как начал, изучил несколько новых трюков. у бэтмена было бы хорошее кольцо, но оно, вероятно, защищено авторским правом;)
Сергей Колодяжный
10

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

$ 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 .

ændrük
источник
+1 от меня! CLI FTW. Если у вас есть 2 замены батареи BAT0 для BAT1 :)
Rinzwind
Разочарование начиная с 2.6.24, мы должны использовать/sys/class/power_supply/BAT0/
Пабло А
9

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

cat /proc/acpi/battery/BAT0/info

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

cat /proc/acpi/battery/BAT0/state
MEM
источник
Это было обескуражено в другом идентичном ответе.
Пабло А
6

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

Например

watch --interval=5 acpi -V

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

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

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

iceburn
источник
5

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

cat /sys/class/power_supply/BAT0/capacity
Святой
источник
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 "$@"|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
источник
Мэтт, попробовал ваше предложение, получил «Нет файла или каталога»
Джо
Ага ... хорошо, я почти уверен, что именно поэтому acpi он не работает, потому что я думаю, что 11.10 не поддерживает функции ACPI вашего ноутбука [батарея и т. Д.]. Я думаю, что я испытал нечто подобное при обновлении в прошлом. Я все еще на 11.04, хотя. Извините, что это не сработало для вас :(
Мэтт
Итак, просто любопытно, вы можете вставить вывод ls /proc/acpi/? Спасибо
Мэтт
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
источник
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
Марк Симмонс
источник
1

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

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

65%

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

intika
источник
0

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

sheepeatingtaz
источник
0

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

$ 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
SebMa
источник
-4
cat /proc/acpi/ac_adapter/AC/state
Тодд Харрис
источник
3
не уверен, о чем ты здесь говоришь. запуск его в терминале далcat: /proc/acpi/ac_adapter/AC0/state: No such file or directory
infoquad