Jak sprawdzić stan baterii za pomocą terminala?

273

Chciałbym polecenia sprawdzającego stan baterii za pomocą terminala

    
zadawane Joe 20.10.2011, 03:24
źródło

18 odpowiedzi

287

Poniższe polecenie wyświetla status partii i informacje statystyczne o baterii. Ścieżkę /org/... można znaleźć za pomocą polecenia upower -e ( --enumerate ).

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

Przykładowy wynik:

  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 te informacje, które chcesz uzyskać z wszystkich danych wyjściowych.

Jeden prosty sposób: przeciągnięcie powyższej komendy do

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

wyjścia:

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

Jeśli często chciałbyś 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 i możesz wpisać "bat" w dowolnym momencie, w terminalu.

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

    
odpowiedział Lekensteyn 09.02.2012, 18:42
źródło
104

Przyjazne przypomnienie : od kiedy jądro Linuksa 2.6.24 przy użyciu /proc do przechowywania informacji o ACPI zostało zniechęcone i przestarzałe .

Teraz jesteśmy zachęcani do używania - > /sys/class/power_supply/BAT0 .

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

Na przykład pojemność - > %kod% status - > cat /sys/class/power_supply/BAT1/capacity

    
odpowiedział Terry Wang 17.06.2013, 10:35
źródło
59

Najpierw zainstaluj acpi , uruchamiając to polecenie,

sudo apt-get install acpi

Następnie uruchom:

acpi

Przykładowe wyniki:

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

Lub dla bardziej szczegółowego wyniku, który jest stale aktualizowany:

watch --interval=5 acpi -V

Wynik:

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
    
odpowiedział Suhaib 24.11.2012, 21:20
źródło
26

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 po prostu wartość liczbowa z tą jedną linią

upower -i $(upower -e | grep '/battery') | grep --color=never -E percentage|xargs|cut -d' ' -f2|sed s/%//
    
odpowiedział rubo77 02.07.2014, 10:56
źródło
23

Wystarczy wpisać polecenie

  

acpi

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

  

acpi -V

Nie musiałem już instalować żadnych pakietów.

System: Debian 7.2 64bit

    
odpowiedział user309404 26.07.2014, 16:36
źródło
15

Może spróbuj:

cat /proc/acpi/battery/BAT0/state

cat /proc/acpi/battery/BAT0/info

    
odpowiedział Mariano L 20.10.2011, 07:36
źródło
15

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

Zasadniczo wszystko, co musisz zrobić, to:

sudo apt-get install acpi
acpi -V
    
odpowiedział josh-fuggle 10.06.2011, 06:57
źródło
11

Jestem trochę spóźniony na imprezę, ale oto mój mały wkład. W oparciu o poprzednie odpowiedzi stworzyłem prosty skrypt:

#!/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ły mniej więcej tak:

POWER_SUPPLY_CAPACITY=23

N.B. : numer baterii może być inny dla ciebie, w moim przypadku jest to BAT1, ale zawsze możesz go znaleźć przez cd'ing do / sys / class / power_supply lub jako lekensteyn wspomniany przez upower -e

Mój komputer: Ubuntu 13.10, 3.11.0

Zastąp symbol BAT1 w powyższym kodzie basha BAT0 , jeśli masz starszą wersję Ubuntu, tj. 13.04 lub nowszą.

ULEPSZONY SCRIPT: Od czasu mojego oryginalnego wpisu wprowadziłem niewielką poprawkę do skryptu:

#!/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 z bash. To wszystko jest oczywiste. Jeśli bateria jest obecna, pojawi się, a jeśli nie - skrypt powie. Teraz przejdź do pliku .bashrc i dodaj $ (batpower) do swojego zgłoszenia. Oto moja promocja:

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

Zaktualizuj terminal lub otwórz nową kartę lub okno, a teraz możesz monitorować stan naładowania akumulatora w terminalu! w tym tty! Niech pochwalą się scenariusze!

    
odpowiedział Sergiy Kolodyazhnyy 23.07.2014, 05:23
źródło
9

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

cat /proc/acpi/battery/BAT0/info

Jeśli chcesz po prostu stan:

cat /proc/acpi/battery/BAT0/state
    
odpowiedział MEM 19.04.2011, 14:20
źródło
9

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

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

To polecenie zostało usunięte z źródła autorstwa byobu . Może to być dobry kandydat do aliasu Bash .

    
odpowiedział ændrük 10.06.2011, 07:35
źródło
5

Zainstaluj acpi, a następnie użyj watch do ciągłego monitorowania przez linię poleceń.

E.g.

watch --interval=5 acpi -V

wyświetli informacje takie jak poniżej i będzie aktualizowane co 5 sekund.

  

Bateria 0: pełna, 100%, informacje o cenie niedostępne
  Bateria 0: pojemność projektowa 6000 mAh, ostatnia pełna pojemność 3424 mAh = 57%

Pytanie: dlaczego ktoś to zrobiłby? No cóż, mam laptopa ze zepsutym ekranem LCD, którego teraz używam jako mojego bittorrent box.

    
odpowiedział iceburn 30.08.2011, 22:33
źródło
5

Wykonałem to zadanie w ubuntu 14.04:

cat /sys/class/power_supply/BAT0/capacity
    
odpowiedział the_saint 23.11.2014, 14:29
źródło
4

Zamierzałem zasugerować acpi , ale po przeczytaniu go nie działa w 11.10, miałem pomysł.

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

Jeśli pojawi się "plik lub katalog nie znaleziony", to nie zadziała.

Ale jeśli wylistuje pliki, to tutaj jest skrypt [wklej go do / usr / games / lub innego katalogu w $ PATH i uruchom sudo chmod +x /usr/games/batterypercent lub jakkolwiek go nazwałeś Właśnie napisałem dla ciebie, który da ci szacunkową wartość procentową baterii [patrz poniżej]:

(Uwaga, jeśli jeszcze nie jest zainstalowany, zainstaluj program calc z 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. Mówię o estymacji powyżej, ponieważ acpi pokazuje 93% baterii, a mój skrypt pokazuje 90% baterii, więc spróbuj tego skryptu na podstawie procentowego zużycia baterii GUI i zobacz, jak się to nie udaje. W moim przypadku wydaje się on konsekwentnie o 3% niższy niż odsetek acpi. W takim przypadku możesz dodać tę linię tuż przed ostatnią linią: percent=$((percent + 3)) , gdzie "3" to procent, w którym jest niska.

** W moim lenovo bateria jest wymieniona jako BAT1, spróbuj także. (12.04 LTS)

    
odpowiedział Matt 20.10.2011, 04:42
źródło
1

Podobny skrypt bez kalc 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"
    
odpowiedział xerostomus 15.11.2014, 19:24
źródło
1

Oto, czego używam. Po prostu analizuje różnicę między pełnym naładowaniem a bieżącym ładowaniem, a także sprawdza, czy ładunek spada, w takim 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
    
odpowiedział Mark Simmons 28.02.2016, 13:47
źródło
0

To nie pomoże wszystkim, ale zrobiłem to - korzystam z byobu za każdym razem, gdy korzystam z terminalu, i Bateria jest jedną z opcji paska powiadomień o stanie.

    
odpowiedział sheepeatingtaz 07.01.2016, 09:41
źródło
0

Możemy powtórzyć tylko procent z tym poleceniem

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

65%

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

    
odpowiedział intika 25.03.2018, 13:56
źródło
-2
cat /proc/acpi/ac_adapter/AC/state
    
odpowiedział Todd Harris 19.04.2011, 14:03
źródło
-2

To działa:

cat /proc/acpi/ac_adapter/AC0/state
    
odpowiedział xerostomus 15.11.2014, 18:35
źródło

Przeczytaj inne pytania na temat tagów