Як перевірити стан акумулятора через термінал?


Відповіді:


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), яка показує інформацію про всі доступні джерела живлення, такі як батареї ноутбука, зовнішні миші тощо.


9
upower --enumerateможе бути корисним, якщо ви не знаєте, як користуватися upower.
ландроні

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"));робить її дуже простою і не залежною від зовнішніх залежностей.
Амін NAIRI

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 градусів
Тепловий 0: точка відключення 0 переходить у критичний режим при температурі 127,0 градусів
Тепловий 0: точка 1 відключення переходить у режим гарячого при температурі 127,0 градусів
Охолодження 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

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/%//

У Fedora 23 мені довелося похвалитись, batteryа BATне змусити його працювати. Я виявив, що с upower --enumerate.
Ерік

grep для batteryробіт в Ubuntu теж, тому я змінив його зBAT
rubo77

28

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

acpi

Для отримання детальної інформації ви можете ввести

acpi -V

Мені раніше не довелося встановлювати жодні пакунки.

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


19

Ось стаття про пакет, який може перевірити термін служби акумулятора в командному рядку.

В основному, все, що вам потрібно зробити, це:

sudo apt-get install acpi
acpi -V

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

Примітка: номер батареї для вас може бути різним, в моєму випадку це BAT1, але ви завжди можете це дізнатися, перейшовши на cd'ing до / sys / class / power_supply або як Лекенштейн згадується через 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 

Як завжди, зверніть увагу на простори з басом. Це все само собою пояснюється. Якщо акумулятор присутній, він з’явиться, якщо ні - сценарій так вам скаже. Тепер перейдіть до файлу .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

Оновлений, але Batman (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%

Ця команда знята з джерела byobu . Це може бути хорошим кандидатом на псевдонім Баша .


+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

Це було відверто в іншій ідентичній відповіді.
Пабло А

6

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

Напр

watch --interval=5 acpi -V

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

Акумулятор 0: Повна, 100%, інформація про швидкості недоступна
Батарея 0: проектна потужність 6000 мАг, остання повна ємність 3424 мАг = 57%

Питання: чому хтось би це робив? Ну, у мене є ноутбук зі зламаним РК-екраном, який я зараз використовую як свою коробку bittorrent.


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% акумулятора, тому спробуйте цей скрипт залежно від вашого відсотка батареї GUI, і подивіться, як він працює. У моєму випадку, здається, це на 3% нижче, ніж відсоток акпі. У такому випадку ви можете додати цей рядок перед останнім рядком:, percent=$((percent + 3))де "3" - відсоток, на який він низький.

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


Метт, спробувавши вашу пропозицію, отримав "Немає файлу чи каталогу"
Joe

Argh .. добре, я майже впевнений , що це , чому 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"

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%

у випадку, якщо вам потрібно отримати це значення


0

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


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

-4
cat /proc/acpi/ac_adapter/AC/state

3
не впевнений, про що ти тут говориш. запустивши його в терміналі давcat: /proc/acpi/ac_adapter/AC0/state: No such file or directory
infoquad
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.