Jak sprawdzić stan baterii za pomocą terminala?

320

Chciałbym polecenie, które wyświetla stan baterii w terminalu.

Joe
źródło
29
$ upower -i $(upower -e | grep 'BAT') | grep -E "state|to\ full|percentage"
Jake Berger,

Odpowiedzi:

335

Poniższe polecenie generuje wiele informacji o stanie i danych statystycznych dotyczących akumulatora. /org/...Ścieżka może być znaleziony z poleceniem upower -e( --enumerate).

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

Przykładowe dane wyjściowe:

  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

Możesz użyć narzędzi takich jak grep, aby uzyskać tylko potrzebne informacje z całego tego wyjścia.

Jeden prosty sposób: wpakowanie powyższego polecenia do

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

wyjścia:

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

Jeśli często chcesz uruchomić to polecenie, możesz utworzyć alias Bash dla całego polecenia. Przykład:

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

Dodaj to na końcu pliku .bashrc, a będziesz mógł wpisać „bat” w dowolnym momencie w terminalu.

Istnieje również polecenie upower -d( --dump), które wyświetla informacje o wszystkich dostępnych zasobach energii, takich jak baterie laptopów, myszy zewnętrzne itp.

Lekensteyn
źródło
9
upower --enumeratemoże być przydatny, jeśli nie masz pewności, jak go używać upower.
landroni
5
@landroni I skrótową opcją jest to upower -e, że polecenie wyświetla listę dostępnych ścieżek upower -i .... Jeśli jesteś leniwy i chcesz tylko listę wszystkich urządzeń, użyj upower -d( upower --dump).
Lekensteyn,
1
W rzeczy samej. Myślę, że byłby to użyteczny dodatek do samej odpowiedzi, ponieważ kiedy po raz pierwszy spróbowałem użyć upower, natychmiast się zgubiłem.
landroni
1
@landroni Dobra uwaga, zaktualizowałem odpowiedź. Jeśli masz więcej powiązanych dodatków, możesz go edytować.
Lekensteyn,
8
Kolejny liniowiec może byćupower -i $(upower -e | grep BAT) | grep --color=never -E "state|to\ full|to\ empty|percentage"
Wilf
124

Przypominamy : od jądra Linux 2.6.24 używając /procdo przechowywania informacji ACPI został zniechęcony i przestarzałe .

Teraz zachęcamy do korzystania z -> /sys/class/power_supply/BAT0.

AKTUALIZACJA: Linux 3.19 i nowsze wersje, powinniśmy spojrzeć na następujący katalog -> /sys/class/power_supply/BAT1/

Na przykład sprawdzanie pojemności i statusu w Arch Linux z systemem 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
Terry Wang
źródło
1
W szczególności /sys/class/power_supply/BAT0/capacitywydaje się , że pokazuje aktualny procent obciążenia.
thomasa88,
Przestarzałe… czy nadal działa?
neverMind9,
3
+1, to powinna być zaakceptowana odpowiedź, ponieważ nie opiera się na dodatkowym oprogramowaniu, które może nie zostać zainstalowane i nie jest potrzebne do udzielenia odpowiedzi na to pytanie. @ neverMind9: Nie wiem, co masz na myśli, /procjest przestarzałe, ale /sysdziała dla mnie idealnie, nawet w jądrze 4.20.
comfreak
1
@comfreak Właściwie działa również dla mnie.
neverMind9
1
Nie tylko powinna to być odpowiedź akceptora, ale odzyskiwanie danych można osiągnąć za pomocą dowolnego języka programowania, który ma readfunkcję podobną do PHP, $capacity = trim(file_get_contents("/sys/class/power_supply/BAT0/capacity"));co czyni go bardzo łatwym i niezależnym od zewnętrznych zależności.
Amin NAIRI,
67

Najpierw zainstaluj acpi, uruchamiając to polecenie,

sudo apt-get install acpi

Następnie uruchomić:

acpi

Przykładowe dane wyjściowe:

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

Lub bardziej szczegółowe dane wyjściowe, które stale się aktualizują:

watch --interval=5 acpi -V

Wynik:

Co 5.0s: acpi -V Środa 8 stycznia 15:45:35 2014

Bateria 0: pełna, 100%
Adapter 0: on-line
Temperatura 0: ok, 44,0 stopni C
Thermal 0: punkt zadziałania 0 przełącza się w tryb krytyczny w temperaturze 127,0 stopni C
Termiczna 0: punkt zadziałania 1 przełącza się w tryb gorący w temperaturze 127,0 stopni C
Chłodzenie 0: intel_powerclamp brak dostępnych informacji o stanie
Chłodzenie 1: pkg-temp-0 brak dostępnych informacji o stanie
Chłodzenie 2: LCD 100 100
Chłodzenie 3: LCD 100 100
Chłodzenie 4: Procesor 0 z 10
Chłodzenie 5: Procesor 0 z 10
Chłodzenie 6: Procesor 0 z 10
Chłodzenie 7: Procesor 0 z 10
Chłodzenie 8: Procesor 0 z 10
Chłodzenie 9: Procesor 0 z 10
Chłodzenie 10: Procesor 0 z 10
Chłodzenie 11: procesor 0 z 10
Suhaib
źródło
29

Dzięki @Wilf działa to na moim Ubuntu 17.10 na Lenovo Yoga 720:

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

Wynik:

state:               fully-charged
percentage:          100%

Lub tylko wartość liczbowa z tym jednym linijkiem

upower -i $(upower -e | grep '/battery') | grep --color=never -E percentage|xargs|cut -d' ' -f2|sed s/%//
rubo77
źródło
W Fedorze 23 musiałem grepować, batteryzamiast BATdziałać. Znalazłem to z upower --enumerate.
erik
grep batterydziała również w Ubuntu, więc zmieniłem go zBAT
rubo77
28

Wystarczy wpisać polecenie

acpi

Aby uzyskać szczegółowe informacje, możesz wpisać

acpi -V

Nie musiałem wcześniej instalować żadnych pakietów.

System: Debian 7.2 64bit

użytkownik309404
źródło
19

Oto artykuł na temat pakietu, który może sprawdzić żywotność baterii w wierszu poleceń.

Zasadniczo wszystko, co musisz zrobić, to:

sudo apt-get install acpi
acpi -V
josh-fuggle
źródło
18

Może możesz spróbować:

cat /proc/acpi/battery/BAT0/state

cat /proc/acpi/battery/BAT0/info

Mariano L.
źródło
23
używanie /procdo przechowywania informacji ACPI jest odradzane i przestarzałe od 2.6.24. Teraz jest w środku /sys/class/power_supply/BAT0.
Terry Wang,
14

Jestem trochę spóźniony na przyjęcie, ale oto mój mały wkład. Opierając się na poprzednich odpowiedziach, stworzyłem prosty skrypt batpower:

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

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

Dane wyjściowe do wykonania tego (./batpower) będą wyglądać mniej więcej tak:

POWER_SUPPLY_CAPACITY=23

Uwaga: numer baterii może być dla Ciebie inny, w moim przypadku jest to BAT1, ale zawsze możesz go znaleźć, zapisując cd'ing na / sys / class / power_supply lub jak Lekensteyn wspomniał przez upower -e

Moja maszyna: Ubuntu 13.10, 3.11.0

Zamień BAT1 w powyższym kodzie bash na BAT0, jeśli masz starszą wersję Ubuntu, tj. 13.04 lub nowszą.

ULEPSZONY PISMO: Od czasu mojego oryginalnego posta wprowadziłem niewielką poprawę w skrypcie:

#!/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 

Jak zawsze, zwracaj uwagę na spacje za pomocą bash. Wszystko to jest oczywiste. Jeśli bateria jest obecna, pokaże się, jeśli nie - skrypt to powie. Teraz przejdź do pliku .bashrc i dodaj $ (batpower) do pytania. Oto mój promt:

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

Zaktualizuj terminal lub otwórz nową kartę lub okno, a teraz możesz stale monitorować poziom naładowania baterii w terminalu! w tym tty! Niech będzie chwalony skrypt! wprowadź opis zdjęcia tutaj

Sergiy Kolodyazhnyy
źródło
Musisz sprawdzić /sys/class/power_supply/BAT0i /sys/class/power_supply/BAT1... Może być albo. I powinieneś użyć tej ścieżki ( /sys/class/power_supply/BAT#).
dylnmc
W moim netbooku Ubuntu 12.04 (po zmianie na BAT0) wydaje się, że nie otrzymuję linii POWER_SUPPLY_CAPACITY. Wygląda na to, że mógłbym to obliczyć na podstawie wartości POWER_SUPPLY_CHARGE_FULL i POWER_SUPPLY_CHARGE_NOW.
mwfearnley
Pozytywnie oceniany, ale Batman (Menedżer baterii) podświadomie ma ładniejszy dźwięk niż Batpower :) Mówiąc poważnie, interesujące jest to, że pisałeś w AskUbuntu w 2014 roku i jak różnisz się dzisiaj.
WinEunuuchs2Unix
@ WinEunuuuchs2Unix Tak, zmieniłem się nieco od początku, nauczyłem się kilku nowych sztuczek. batman miałby niezły dzwonek, ale prawdopodobnie jest chroniony prawami autorskimi;)
Sergiy Kolodyazhnyy
10

Możesz to zrobić bez instalowania dodatkowych pakietów:

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

To polecenie jest usuwane ze źródła byobu . Może to być dobry kandydat na alias Bash .

ændrük
źródło
+1 ode mnie! CLI FTW. Jeśli masz 2 baterie zmień BAT0 na BAT1 :)
Rinzwind
Odradza się od 2.6.24, powinniśmy użyć/sys/class/power_supply/BAT0/
Pablo A
9

Uruchom następujące polecenie w terminalu, aby uzyskać szczegółowe informacje:

cat /proc/acpi/battery/BAT0/info

Jeśli chcesz tylko, aby stan:

cat /proc/acpi/battery/BAT0/state
MEM
źródło
Ten został zniechęcony w drugiej identyczną odpowiedź.
Pablo A
6

Zainstaluj acpi, a następnie użyj watchdo ciągłego monitorowania wiersza poleceń.

Na przykład

watch --interval=5 acpi -V

pokaże informacje takie jak poniżej i będzie aktualizować co 5 sekund.

Bateria 0: pełna, 100%, informacja o stawce niedostępna
Bateria 0: pojemność projektowa 6000 mAh, ostatnia pełna pojemność 3424 mAh = 57%

Pytanie brzmi, dlaczego ktoś miałby to zrobić? Cóż, mam laptopa ze zepsutym ekranem LCD, którego teraz używam jako mojego bittorrenta.

poparzenie lodu
źródło
5

To zrobiło dla mnie zadanie w Ubuntu 14.04:

cat /sys/class/power_supply/BAT0/capacity
Święty
źródło
4

Chciałem zasugerować, acpiale po przeczytaniu, że nie działa w 11.10, wpadłem na pomysł.

Wpisz to w swoim terminalu: ls /proc/acpi/battery/BAT0 lubBAT1

Jeśli pojawi się „nie znaleziono pliku lub katalogu”, to nie zadziała.

Ale jeśli wyświetla listę plików, oto skrypt [wklej go do / usr / games / lub innego katalogu w $ PATH i uruchom sudo chmod +x /usr/games/batterypercent, lub jakkolwiek go nazwiesz], który właśnie dla ciebie napisałem, który da ci szacunkowy procent baterii [Patrz poniżej]:

(Uwaga, jeśli nie jest jeszcze zainstalowany, zainstaluj program calcz repo: 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)%

Przetestowałem ten skrypt na moim laptopie. Podaję szacunek powyżej, ponieważ acpipokazuje 93% baterii, a mój skrypt pokazuje 90% baterii, więc wypróbuj ten skrypt w stosunku do procentowej baterii GUI i zobacz, jak jest źle. W moim przypadku wydaje się być konsekwentnie o 3% niższy niż procent acpi. W takim przypadku możesz dodać ten wiersz tuż przed ostatnim wierszem: percent=$((percent + 3))gdzie „3” to procent, o który jest niski.

** W moim lenovo bateria jest wymieniona jako BAT1, spróbuj tego też. (12,04 LTS)

Matt
źródło
Matt, wypróbował twoją sugestię, dostał „Brak pliku lub katalogu”
Joe,
Zgadzam się, okej, jestem prawie pewny, że to dlatego acpi nie działa, ponieważ wydaje mi się, że 11.10 nie obsługuje również funkcji ACPI twojego laptopa [bateria, itp.]. Myślę, że doświadczyłem czegoś takiego podczas aktualizacji w przeszłości. Nadal jestem 11.04. Przepraszam, że ci to nie zadziałało :(
Matt
Ciekawe, czy możesz wkleić wynik ls /proc/acpi/? Dzięki
Matt
1

Podobny skrypt bez obliczeń lub 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"
kserostomus
źródło
1

Oto czego używam. Po prostu patrzy na różnicę między pełnym ładowaniem a bieżącym ładowaniem, a także sprawdza, czy ładunek spada, w którym to przypadku używa powiadomienia, aby ostrzec użytkownika.

#!/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
źródło
1

Za pomocą tego polecenia możemy powtórzyć tylko procent

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

65%

na wypadek, gdybyś musiał wyodrębnić tę wartość

intika
źródło
0

To nie pomoże wszystkim, ale zrobiło mi to - używam byobu za każdym razem, gdy korzystam z terminala, a bateria jest jedną z opcji paska powiadomień o stanie.

sheepeatingtaz
źródło
0

Możesz albo wpisać:

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

lub

$ 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
źródło
-4
cat /proc/acpi/ac_adapter/AC/state
Todd Harris
źródło
3
nie jestem pewien, o czym tu mówisz. uruchomienie go w terminalu dałocat: /proc/acpi/ac_adapter/AC0/state: No such file or directory
infoquad