Wie überprüfe ich den Batteriestatus über das Terminal?

320

Ich hätte gerne einen Befehl, der den Batteriestatus im Terminal anzeigt.

Joe
quelle
29
$ upower -i $(upower -e | grep 'BAT') | grep -E "state|to\ full|percentage"
Jake Berger

Antworten:

335

Der folgende Befehl gibt einen Chargenstatus und statistische Informationen über die Batterie aus. Den /org/...Pfad finden Sie mit dem Befehl upower -e( --enumerate).

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

Beispielausgabe:

  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

Sie können Tools wie grep verwenden, um genau die Informationen zu erhalten, die Sie von all diesen Ausgaben benötigen.

Eine einfache Möglichkeit: Leiten Sie den obigen Befehl in

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

Ausgänge:

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

Wenn Sie diesen Befehl häufig ausführen möchten, können Sie einen Bash-Alias ​​für den gesamten Befehl erstellen. Beispiel:

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

Fügen Sie dies am Ende Ihrer .bashrc-Datei hinzu, und Sie können jederzeit im Terminal 'bat' eingeben.

Es gibt auch einen upower -d( --dump) -Befehl, der Informationen zu allen verfügbaren Stromquellen wie Laptop-Batterien, externen Mäusen usw. anzeigt.

Lekensteyn
quelle
9
upower --enumeratekann nützlich sein, wenn Sie sich nicht sicher sind, wie Sie es verwenden sollen upower.
Landroni
5
@landroni Und die Kurzwahloption ist upower -e, dass der Befehl die verfügbaren Pfade für auflistet upower -i .... Wenn Sie faul sind und nur eine Liste aller Geräte möchten, verwenden Sie upower -d( upower --dump).
Lekensteyn
1
Tatsächlich. Ich denke, dies wäre eine nützliche Ergänzung zur eigentlichen Antwort, da ich upowermich sofort verlaufen habe , als ich zum ersten Mal versuchte, sie zu verwenden .
Landroni
1
@landroni Guter Punkt, ich habe die Antwort aktualisiert. Fühlen Sie sich frei, es zu bearbeiten, wenn Sie weitere Ergänzungen haben.
Lekensteyn
8
Ein weiterer Einzeiler könnte seinupower -i $(upower -e | grep BAT) | grep --color=never -E "state|to\ full|to\ empty|percentage"
Wilf
124

Eine freundliche Erinnerung : Da Linux - Kernel 2.6.24 mit /procACPI Informationen zu speichern , wurde entmutigt und veraltet .

Jetzt werden wir ermutigt, -> zu verwenden /sys/class/power_supply/BAT0.

UPDATE: Ab Linux 3.19 sollten wir uns das folgende Verzeichnis ansehen -> /sys/class/power_supply/BAT1/

Zum Beispiel Überprüfen von Kapazität und Status auf Arch Linux unter 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
quelle
1
Insbesondere /sys/class/power_supply/BAT0/capacityscheint der aktuelle Ladungsprozentsatz anzuzeigen.
Thomasa88
Veraltet ... funktioniert es noch?
neverMind9
3
+1, dies sollte die akzeptierte Antwort sein, da keine zusätzliche Software erforderlich ist, die möglicherweise nicht installiert ist und zur Beantwortung dieser Frage nicht benötigt wird. @ neverMind9: Ich weiß nicht, was du meinst, /procist veraltet, aber es /sysfunktioniert perfekt für mich, auch in Kernel 4.20.
Comfreak
1
@comfreak Funktioniert auch für mich.
NeverMind9
1
Dies sollte nicht nur die Antwort des Akzeptors sein, sondern das Abrufen der Daten kann auch mithilfe einer beliebigen Programmiersprache erfolgen, die eine readFunktion wie in PHP aufweist $capacity = trim(file_get_contents("/sys/class/power_supply/BAT0/capacity"));, die es supereinfach macht und nicht von externen Abhängigkeiten abhängig ist.
Amin NAIRI
67

Installieren Sie zuerst, acpiindem Sie diesen Befehl ausführen.

sudo apt-get install acpi

Dann renne:

acpi

Beispielausgabe:

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

Oder für eine ausführlichere Ausgabe, die ständig aktualisiert wird:

watch --interval=5 acpi -V

Ausgabe:

Alle 5.0s: acpi -V Mi Jan 8 15:45:35 2014

Batterie 0: voll, 100%
Adapter 0: online
Thermal 0: ok, 44,0 ° C
Thermal 0: Auslösepunkt 0 wechselt bei 127,0 ° C in den kritischen Modus
Thermal 0: Auslösepunkt 1 wechselt in den Modus Heiß bei einer Temperatur von 127,0 ° C
Kühlung 0: intel_powerclamp Keine Statusinformationen verfügbar
Kühlung 1: pkg-temp-0 Keine Statusinformationen verfügbar
Kühlung 2: LCD 100 von 100
Kühlung 3: LCD 100 von 100
Kühlung 4: Prozessor 0 von 10
Kühlung 5: Prozessor 0 von 10
Kühlung 6: Prozessor 0 von 10
Kühlung 7: Prozessor 0 von 10
Kühlung 8: Prozessor 0 von 10
Kühlung 9: Prozessor 0 von 10
Kühlung 10: Prozessor 0 von 10
Kühlung 11: Prozessor 0 von 10
Suhaib
quelle
29

Dank @Wilf funktioniert dies auf meinem Ubuntu 17.10 unter Lenovo Yoga 720:

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

Ausgabe:

state:               fully-charged
percentage:          100%

Oder nur der numerische Wert mit diesem einen Liner

upower -i $(upower -e | grep '/battery') | grep --color=never -E percentage|xargs|cut -d' ' -f2|sed s/%//
rubo77
quelle
Auf Fedora 23 musste ich nach greifen, batteryanstatt BATes zum Laufen zu bringen. Ich fand das mit upower --enumerate.
Erik
grep für batteryArbeiten in Ubuntu auch, so habe ich es vonBAT
rubo77
28

Es reicht aus, den Befehl einzugeben

acpi

Für detaillierte Informationen können Sie eingeben

acpi -V

Ich musste vorher keine Pakete installieren.

System: Debian 7.2 64bit

user309404
quelle
19

Hier ist ein Artikel über ein Paket, mit dem Sie die Akkulaufzeit in der Befehlszeile überprüfen können.

Grundsätzlich müssen Sie nur Folgendes tun:

sudo apt-get install acpi
acpi -V
josh-fuggle
quelle
18

Vielleicht können Sie versuchen:

cat /proc/acpi/battery/BAT0/state

cat /proc/acpi/battery/BAT0/info

Mariano L
quelle
23
Das /procSpeichern von ACPI-Informationen wird seit 2.6.24 nicht mehr empfohlen. Jetzt ist es in /sys/class/power_supply/BAT0.
Terry Wang
14

Ich bin ein bisschen zu spät zur Party, aber hier ist mein kleiner Beitrag. Basierend auf den vorherigen Antworten habe ich ein einfaches Skript Batpower gemacht:

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

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

Die Ausgabe für die Ausführung dieses Befehls (./batpower) wird ungefähr so ​​aussehen:

POWER_SUPPLY_CAPACITY=23

NB: Die Baterie-Nummer kann für Sie unterschiedlich sein, in meinem Fall ist es BAT1, aber Sie können es immer herausfinden, indem Sie an / sys / class / power_supply oder wie von Lekensteyn durch upower -e erwähnt schreiben

Mein Rechner: Ubuntu 13.10, 3.11.0

Ersetzen Sie BAT1 im obigen Bash-Code durch BAT0, wenn Sie eine ältere Ubuntu-Version haben, z. B. 13.04 oder höher.

VERBESSERTES SCRIPT: Seit meinem ursprünglichen Post habe ich eine kleine Verbesserung am Script vorgenommen:

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

Achten Sie wie immer auf Leerzeichen mit Bash. Das ist alles selbsterklärend. Wenn die Batterie vorhanden ist, wird sie angezeigt, wenn nicht - das Skript sagt es Ihnen. Wechseln Sie nun zu Ihrer .bashrc-Datei und fügen Sie Ihrer Eingabeaufforderung $ (batpower) hinzu. Hier ist mein Promt:

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

Aktualisieren Sie Ihr Terminal oder öffnen Sie einen neuen Tab oder ein neues Fenster. Jetzt können Sie die Akkuladung im Terminal ständig überwachen! einschließlich tty! Möge das Drehbuch gelobt werden! Bildbeschreibung hier eingeben

Sergiy Kolodyazhnyy
quelle
Sie müssen überprüfen /sys/class/power_supply/BAT0und /sys/class/power_supply/BAT1... Es kann entweder sein. Und Sie sollten diesen Pfad verwenden ( /sys/class/power_supply/BAT#).
dylnmc
In meinem Ubuntu 12.04-Netbook (nach dem Wechsel zu BAT0) erhalte ich anscheinend keine POWER_SUPPLY_CAPACITY-Zeile. Es sieht so aus, als könnte ich es aus den Werten POWER_SUPPLY_CHARGE_FULL und POWER_SUPPLY_CHARGE_NOW berechnen.
Mwfearnley
Upvoted, aber Batman (Battery Manager) klingt unbewusst besser als Batpower :) Im Ernst, es ist interessant, dass Sie 2014 in AskUbuntu geschrieben haben und wie anders Sie heute sind.
WinEunuuchs2Unix
@ WinEunuuuchs2Unix Ja, ich habe mich etwas verändert, seit ich angefangen habe, ein paar neue Tricks gelernt. batman hätte einen schönen ring, aber es ist wahrscheinlich urheberrechtlich geschützt;)
Sergiy Kolodyazhnyy
10

Sie können dies tun, ohne zusätzliche Pakete zu installieren:

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

Dieser Befehl wird von byobus Quelle aufgehoben . Es könnte ein guter Kandidat für einen Bash-Alias ​​sein .

ændrük
quelle
+1 von mir! CLI FTW. Wenn Sie 2 Batterien haben, ändern Sie BAT0 für BAT1 :)
Rinzwind
Ist seit 2.6.24 entmutigend, sollten wir verwenden/sys/class/power_supply/BAT0/
Pablo A
9

Führen Sie den folgenden Befehl in einem Terminal aus, um detaillierte Informationen abzurufen:

cat /proc/acpi/battery/BAT0/info

Wenn Sie nur wollen, dass der Staat es tut:

cat /proc/acpi/battery/BAT0/state
MEM
quelle
Dies wurde in der anderen identischen Antwort entmutigt .
Pablo A
6

Installieren Sie acpi und verwenden Sie dann watch, um die Befehlszeile kontinuierlich zu überwachen.

Z.B

watch --interval=5 acpi -V

zeigt die folgenden Informationen an und wird alle 5 Sekunden aktualisiert.

Akku 0: voll, 100%, Tarifinformation nicht verfügbar
Akku 0: Auslegungskapazität 6000 mAh, letzte volle Kapazität 3424 mAh = 57%

Die Frage ist, warum jemand dies tun würde? Nun, ich habe einen Laptop mit kaputtem LCD-Bildschirm, den ich jetzt als Bittorrent-Box verwende.

Eisbrenner
quelle
5

Dies hat den Job für mich in Ubuntu 14.04 gemacht:

cat /sys/class/power_supply/BAT0/capacity
Der Heilige
quelle
4

Ich wollte vorschlagen, acpiaber nachdem ich gelesen hatte, dass es in 11.10 nicht funktioniert, hatte ich eine Idee.

Bitte geben Sie dies in Ihr Terminal ein: ls /proc/acpi/battery/BAT0 oderBAT1

Wenn Sie eine "Datei oder ein Verzeichnis nicht gefunden" bekommen, funktioniert dies nicht.

Aber wenn es Dateien auflistet, dann ist hier ein Skript [fügen Sie es in / usr / games / oder ein anderes Verzeichnis in $ PATH ein, und führen sudo chmod +x /usr/games/batterypercentSie es aus, oder wie auch immer Sie es nennen] , das ich gerade für Sie geschrieben habe und das Ihnen einen geschätzten Prozentsatz der Batterie gibt [Siehe unten]:

(Beachten Sie , wenn nicht bereits installiert ist , installieren Sie das Programm calcaus dem 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)%

Ich habe dieses Skript auf meinem Laptop getestet. Ich sage Schätzung oben, weil acpi93% der Batterie angezeigt werden und mein Skript 90% der Batterie anzeigt. Versuchen Sie also, dieses Skript anhand Ihres GUI-Batterieprozentsatzes zu testen und festzustellen, wie schwach die Batterie ist. In meinem Fall scheint es durchweg 3% niedriger als der Prozentsatz von acpi zu sein. In diesem Fall können Sie diese Zeile direkt vor der letzten Zeile einfügen: percent=$((percent + 3))wobei "3" der Prozentsatz ist, um den sie niedrig ist.

** In meinem Lenovo ist der Akku als BAT1 aufgeführt, versuchen Sie das auch. (12.04 LTS)

Matt
quelle
Matt, versuchte Ihren Vorschlag, bekam eine "Keine Datei oder Verzeichnis"
Joe
Okay, ich bin mir fast sicher, dass dies der Grund dafür ist, dassacpi es nicht funktioniert, da 11.10 vermutlich auch nicht die ACPI-Funktionen Ihres Laptops unterstützt [Akku usw.]. Ich glaube, ich habe so etwas in der Vergangenheit beim Upgrade erlebt. Ich bin aber immer noch am 11.04. Entschuldigung, dass dies nicht funktioniert hat :(
Matt
Also, nur neugierig, können Sie die Ausgabe von einfügen ls /proc/acpi/? Vielen Dank
Matt
1

Ähnliches Skript ohne calc oder 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"
Xerostomus
quelle
1

Hier ist was ich benutze. Es wird lediglich der Unterschied zwischen voller Ladung und aktueller Ladung untersucht und es wird geprüft, ob die Ladung sinkt. In diesem Fall wird eine Benachrichtigung verwendet, um den Benutzer zu benachrichtigen.

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

Mit diesem Befehl können wir nur den Prozentsatz wiedergeben

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

65%

falls Sie diesen Wert extrahieren müssen

intika
quelle
0

Das hilft nicht allen, aber mir hat es geholfen - ich benutze byobu immer, wenn ich ein Terminal benutze, und Batterie ist eine der Optionen für die Statusbenachrichtigungsleiste.

Schafeatingtaz
quelle
0

Sie können entweder Folgendes eingeben:

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

oder

$ 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
quelle
-4
cat /proc/acpi/ac_adapter/AC/state
Todd Harris
quelle
3
Ich bin mir nicht sicher, wovon du hier sprichst. Laufen im Terminal gab escat: /proc/acpi/ac_adapter/AC0/state: No such file or directory
Infoquad