Jak sprawdzić stan baterii za pomocą terminala?


320

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


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.


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

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

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

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


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

18

Może możesz spróbować:

cat /proc/acpi/battery/BAT0/state

cat /proc/acpi/battery/BAT0/info


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


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 .


+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

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.


5

To zrobiło dla mnie zadanie w Ubuntu 14.04:

cat /sys/class/power_supply/BAT0/capacity

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, 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"

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

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ść


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.


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

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

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.