Come posso controllare lo stato della batteria tramite il terminale?


320

Vorrei un comando che visualizzi lo stato della batteria nel terminale.


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

Risposte:


335

Il comando seguente mostra un sacco di stato e informazioni statistiche sulla batteria. Il /org/...percorso può essere trovato con il comando upower -e( --enumerate).

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

Esempio di output:

  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

È possibile utilizzare strumenti come grep per ottenere solo le informazioni desiderate da tutto l'output.

Un modo semplice: reindirizzare il comando sopra

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

uscite:

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

Se desideri eseguire spesso questo comando, puoi creare un alias Bash per l'intero comando. Esempio:

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

Aggiungilo alla fine del tuo file .bashrc e puoi digitare 'bat' in qualsiasi momento, nel terminale.

C'è anche un comando upower -d( --dump) che mostra le informazioni per tutte le risorse energetiche disponibili come batterie per laptop, mouse esterni, ecc.


9
upower --enumeratepuò essere utile se non si è sicuri su come utilizzare upower.
Landroni,

5
@landroni E l'opzione abbreviata è upower -eche quel comando elenca i percorsi disponibili per upower -i .... Se sei pigro e desideri solo un elenco di tutti i dispositivi, usa upower -d( upower --dump).
Lekensteyn,

1
Infatti. Penso che questa sarebbe un'utile aggiunta alla risposta stessa, poiché quando ho provato a usare per la prima volta upowermi sono perso immediatamente.
Landroni,

1
@landroni Ottimo punto, ho aggiornato la risposta. Sentiti libero di modificarlo se hai più aggiunte correlate.
Lekensteyn,

8
Un altro one-liner potrebbe essereupower -i $(upower -e | grep BAT) | grep --color=never -E "state|to\ full|to\ empty|percentage"
Wilf,

124

Un promemoria amichevole : dal momento che il kernel 2.6.24 di Linux che utilizzava /procper archiviare le informazioni ACPI è stato scoraggiato e deprecato .

Ora siamo incoraggiati a usare -> /sys/class/power_supply/BAT0.

AGGIORNAMENTO: Linux 3.19 e successivi, dovremmo guardare la seguente directory -> /sys/class/power_supply/BAT1/

Ad esempio, controllo della capacità e dello stato su Arch Linux con 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
In particolare, /sys/class/power_supply/BAT0/capacitysembra mostrare l'attuale percentuale di addebito.
thomasa88,

Obsoleto ... funziona ancora?
neverMind9,

3
+1, questa dovrebbe essere la risposta accettata, poiché non si basa su software aggiuntivo che potrebbe non essere installato e non è necessario per rispondere a questa domanda. @ neverMind9: non so cosa intendi /procsia deprecato ma /sysfunziona perfettamente per me, anche nel kernel 4.20.
comfreak

1
@comfreak Funziona anche per me, in realtà.
neverMind9

1
Non solo questa dovrebbe essere la risposta all'accettatore, ma il recupero dei dati può essere ottenuto utilizzando qualsiasi linguaggio di programmazione che ha una readfunzione come in PHP $capacity = trim(file_get_contents("/sys/class/power_supply/BAT0/capacity"));che lo rende super facile e non dipendente da dipendenze esterne.
Amin NAIRI,

67

Prima installa acpieseguendo questo comando,

sudo apt-get install acpi

Quindi eseguire:

acpi

Uscita campione:

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

O per un output più dettagliato che aggiorna costantemente:

watch --interval=5 acpi -V

Produzione:

Ogni 5.0: acpi -V mer 8 gennaio 15:45:35 2014

Batteria 0: carica completa, 100%
Adattatore 0: online
Termico 0: ok, 44,0 gradi C
Termico 0: il punto di intervento 0 passa alla modalità critica a temperatura 127,0 gradi C
Termico 0: il punto di intervento 1 passa alla modalità caldo a temperatura 127,0 gradi C
Raffreddamento 0: intel_powerclamp nessuna informazione sullo stato disponibile
Raffreddamento 1: pkg-temp-0 nessuna informazione sullo stato disponibile
Raffreddamento 2: LCD 100 di 100
Raffreddamento 3: LCD 100 di 100
Raffreddamento 4: Processore 0 di 10
Raffreddamento 5: Processore 0 di 10
Raffreddamento 6: Processore 0 di 10
Raffreddamento 7: Processore 0 di 10
Raffreddamento 8: Processore 0 di 10
Raffreddamento 9: Processore 0 di 10
Raffreddamento 10: Processore 0 di 10
Raffreddamento 11: Processore 0 di 10

29

Grazie a @Wilf funziona sul mio Ubuntu 17.10 su Lenovo Yoga 720:

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

Produzione:

state:               fully-charged
percentage:          100%

O solo il valore numerico con questa riga

upower -i $(upower -e | grep '/battery') | grep --color=never -E percentage|xargs|cut -d' ' -f2|sed s/%//

Su Fedora 23 ho dovuto chiamare grep batteryinvece di BATfarlo funzionare. L'ho trovato con upower --enumerate.
Erik,

grep per batteryfunziona anche su Ubuntu, quindi l'ho cambiato daBAT
rubo77

28

Basta digitare il comando

acpi

Per informazioni dettagliate è possibile digitare

acpi -V

Non ho dovuto installare alcun pacchetto prima.

Sistema: Debian 7.2 64 bit


19

Ecco un articolo su un pacchetto che può controllare la durata della batteria dalla riga di comando.

Fondamentalmente, tutto quello che devi fare è:

sudo apt-get install acpi
acpi -V

18

Forse puoi provare:

cat /proc/acpi/battery/BAT0/state

cat /proc/acpi/battery/BAT0/info


23
l'utilizzo /procper memorizzare le informazioni ACPI è stato scoraggiato e deprecato dal 2.6.24. Ora è dentro /sys/class/power_supply/BAT0.
Terry Wang,

14

Sono un po 'in ritardo alla festa, ma ecco il mio piccolo contributo. Sulla base delle risposte precedenti, ho creato un semplice script batpower:

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

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

L'output per l'esecuzione di questo (./batpower) sarà qualcosa del genere:

POWER_SUPPLY_CAPACITY=23

NB: il numero della batteria potrebbe essere diverso per te, nel mio caso è BAT1, ma puoi sempre scoprirlo registrando su / sys / class / power_supply o come menzionato da Lekensteyn tramite upower -e

La mia macchina: Ubuntu 13.10, 3.11.0

Sostituisci BAT1 nel codice bash sopra riportato in BAT0 se hai una versione precedente di Ubuntu, ovvero 13.04 o successive.

SCRIPT MIGLIORATO: Dal mio post originale, ho apportato un piccolo miglioramento alla sceneggiatura:

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

Come sempre, presta attenzione agli spazi con bash. Questo è tutto autoesplicativo. Se la batteria è presente, verrà visualizzata, in caso contrario - lo script lo dirà. Ora, vai al tuo file .bashrc e aggiungi $ (batpower) al tuo prompt. Ecco il mio promt:

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

Aggiorna il tuo terminale o apri una nuova scheda o finestra e ora puoi monitorare costantemente la carica della batteria nel terminale! tra cui tty! Possa la sceneggiatura essere lodata! inserisci qui la descrizione dell'immagine


Devi controllare /sys/class/power_supply/BAT0e /sys/class/power_supply/BAT1... Può essere uno dei due. E dovresti usare quel percorso ( /sys/class/power_supply/BAT#).
dylnmc,

Nel mio netbook Ubuntu 12.04 (dopo essere passato a BAT0), non mi sembra di ottenere una riga POWER_SUPPLY_CAPACITY. Sembra che potrei calcolarlo, però, dai valori POWER_SUPPLY_CHARGE_FULL e POWER_SUPPLY_CHARGE_NOW.
mwfearnley,

Sottovalutato, ma Batman (Battery Manager) ha inconsciamente un suono migliore rispetto a Batpower :) Su una nota seria, è interessante che tu stia scrivendo in AskUbuntu nel 2014 e quanto sei diverso oggi.
WinEunuuchs2Unix

@ WinEunuuuchs2Unix Sì, ho cambiato un po 'da quando ho iniziato, ho imparato alcuni nuovi trucchi. batman avrebbe un bel
suono

10

Puoi farlo senza installare alcun pacchetto aggiuntivo:

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

Questo comando è sollevato dalla fonte di byobu . Potrebbe essere un buon candidato per un alias Bash .


+1 da me! CLI FTW. Se hai 2 batterie di ricambio BAT0 per BAT1 :)
Rinzwind

È scoraggiante dal 2.6.24, dovremmo usare/sys/class/power_supply/BAT0/
Pablo A

9

Eseguire il comando seguente in un terminale per ottenere informazioni dettagliate:

cat /proc/acpi/battery/BAT0/info

Se vuoi solo lo stato fai:

cat /proc/acpi/battery/BAT0/state

Questo è stato scoraggiato nell'altra risposta identica.
Pablo A

6

Installa acpi, quindi usa watchper monitorare continuamente la riga di comando.

Per esempio

watch --interval=5 acpi -V

mostrerà le informazioni come di seguito e si aggiornerà ogni 5 secondi.

Batteria 0: piena, 100%, informazioni sulla velocità non disponibili
Batteria 0: capacità di progettazione 6000 mAh, ultima capacità completa 3424 mAh = 57%

La domanda è: perché qualcuno dovrebbe farlo? Bene, ho un laptop con schermo LCD rotto che sto usando come scatola bittorrent.


5

Questo ha fatto il lavoro per me in Ubuntu 14.04:

cat /sys/class/power_supply/BAT0/capacity

4

Stavo per suggerire, acpima dopo aver letto non funziona nell'11.10, ho avuto un'idea.

Si prega di digitare questo nel terminale: ls /proc/acpi/battery/BAT0 oBAT1

Se ottieni un "file o una directory non trovata", questo non funzionerà.

Ma, se elenca i file, ecco uno script [incollalo in / usr / games / o altra directory in $ PATH, ed esegui sudo chmod +x /usr/games/batterypercent, o come lo chiami] che ho appena scritto per te che ti darà una stima della percentuale della batteria [Vedi sotto]:

(Nota, se non è già installato, installare il programma calcdal 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)%

Ho testato questo script sul mio laptop. Dico la stima sopra perché acpimostra il 93% della batteria e il mio script mostra il 90% della batteria, quindi prova questo script con la percentuale della batteria della tua GUI e vedi com'è fuori. Nel mio caso, sembra essere costantemente inferiore del 3% rispetto alla percentuale di acpi. In tal caso, puoi aggiungere questa riga subito prima dell'ultima riga:, percent=$((percent + 3))dove "3" è la percentuale da cui è bassa.

** Nel mio Lenovo, la batteria è elencata come BAT1, prova anche questo. (12.04 LTS)


Matt, ha provato il tuo suggerimento, ha ricevuto un "Nessun file o directory"
Joe,

Argh .. ok, sono quasi sicuro che questo è il motivo per cui acpi non funziona, perché suppongo che l'11.10 non supporti anche le funzioni ACPI del tuo laptop [batteria, ecc.]. Penso di aver sperimentato qualcosa del genere durante l'aggiornamento in passato. Sono comunque l'11.04. Mi dispiace che non abbia funzionato per te :(
Matt,

Quindi, solo curioso, puoi incollare l'output di ls /proc/acpi/? Grazie
Matt,

1

Script simile senza calc o 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

Ecco cosa uso. Osserva solo la differenza tra addebito completo e addebito corrente, oltre a vedere se l'addebito sta diminuendo, nel qual caso utilizza la notifica per avvisare l'utente.

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

Possiamo fare eco solo alla percentuale con quel comando

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

65%

nel caso in cui sia necessario estrarre quel valore


0

Questo non aiuterà tutti, ma mi ha aiutato: utilizzo byobu ogni volta che utilizzo un terminale e la batteria è una delle opzioni per la barra delle notifiche di stato.


0

Puoi digitare:

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

o

$ 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
non sono sicuro di cosa tu stia parlando qui. eseguendolo nel terminal ha datocat: /proc/acpi/ac_adapter/AC0/state: No such file or directory
infoquad
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.