Odpowiedzi:
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.
upower --enumerate
może być przydatny, jeśli nie masz pewności, jak go używać upower
.
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
).
upower
, natychmiast się zgubiłem.
upower -i $(upower -e | grep BAT) | grep --color=never -E "state|to\ full|to\ empty|percentage"
Przypominamy : od jądra Linux 2.6.24 używając /proc
do 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
/sys/class/power_supply/BAT0/capacity
wydaje się , że pokazuje aktualny procent obciążenia.
/proc
jest przestarzałe, ale /sys
działa dla mnie idealnie, nawet w jądrze 4.20.
read
funkcję 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.
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
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/%//
battery
zamiast BAT
działać. Znalazłem to z upower --enumerate
.
battery
działa również w Ubuntu, więc zmieniłem go zBAT
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
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
Może możesz spróbować:
cat /proc/acpi/battery/BAT0/state
cat /proc/acpi/battery/BAT0/info
/proc
do przechowywania informacji ACPI jest odradzane i przestarzałe od 2.6.24. Teraz jest w środku /sys/class/power_supply/BAT0
.
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!
/sys/class/power_supply/BAT0
i /sys/class/power_supply/BAT1
... Może być albo. I powinieneś użyć tej ścieżki ( /sys/class/power_supply/BAT#
).
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 .
/sys/class/power_supply/BAT0/
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
Zainstaluj acpi, a następnie użyj watch
do 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.
Chciałem zasugerować, acpi
ale 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 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. Podaję szacunek powyżej, ponieważ acpi
pokazuje 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)
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 :(
ls /proc/acpi/
? Dzięki
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"
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
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.
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
cat /proc/acpi/ac_adapter/AC/state
cat: /proc/acpi/ac_adapter/AC0/state: No such file or directory
$ upower -i $(upower -e | grep 'BAT') | grep -E "state|to\ full|percentage"