¿Cómo verifico el estado de la batería a través del terminal?

320

Me gustaría un comando que muestre el estado de la batería en el terminal.

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

Respuestas:

335

El siguiente comando genera un estado de lote e información estadística sobre la batería. La /org/...ruta se puede encontrar con el comando upower -e( --enumerate).

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

Salida de ejemplo:

  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

Podría usar herramientas como grep para obtener solo la información que desea de toda esa salida.

Una forma simple: canalizar el comando anterior en

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

salidas:

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

Si a menudo le gustaría ejecutar ese comando, entonces podría hacer un alias Bash para todo el comando. Ejemplo:

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

Agregue eso al final de su archivo .bashrc, y puede escribir 'bat' en cualquier momento, en la terminal.

También hay un comando upower -d( --dump) que muestra información para todos los recursos de energía disponibles, como baterías de portátiles, ratones externos, etc.

Lekensteyn
fuente
99
upower --enumeratepuede ser útil si no está seguro de cómo usarlo upower.
landroni
55
@landroni Y la opción abreviada es upower -eque ese comando enumera las rutas disponibles para upower -i .... Si eres perezoso y solo quieres una lista de todos los dispositivos, usa upower -d( upower --dump).
Lekensteyn
1
En efecto. Creo que esta sería una adición útil a la respuesta en sí, ya que cuando intenté usarla por primera vez upowerme perdí.
landroni
1
@landroni Buen punto, he actualizado la respuesta. Siéntase libre de editarlo si tiene más adiciones relacionadas.
Lekensteyn
8
Otra frase podría serupower -i $(upower -e | grep BAT) | grep --color=never -E "state|to\ full|to\ empty|percentage"
Wilf
124

Un recordatorio amistoso : desde el kernel de Linux 2.6.24 que se utiliza /procpara almacenar información ACPI se ha desaconsejado y desaprobado .

Ahora se nos recomienda usar -> /sys/class/power_supply/BAT0.

ACTUALIZACIÓN: Linux 3.19 y en adelante, debemos mirar el siguiente directorio -> /sys/class/power_supply/BAT1/

Por ejemplo, verificar la capacidad y el estado en 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
Terry Wang
fuente
1
Específicamente, /sys/class/power_supply/BAT0/capacityparece mostrar el porcentaje de carga actual.
thomasa88
En desuso ... ¿sigue funcionando?
neverMind9
3
+1, esta debería ser la respuesta aceptada, ya que no se basa en software adicional que podría no estar instalado y no es necesario para responder esta pregunta. @ neverMind9: No sé a qué te refieres, /procestá en desuso pero /sysfunciona perfectamente para mí, incluso en el kernel 4.20.
Comfreak
1
@comfreak también funciona para mí, en realidad.
neverMind9
1
No solo esta debería ser la respuesta aceptada, sino que la recuperación de los datos se puede lograr mediante el uso de cualquier lenguaje de programación que tenga una readfunción como en PHP, $capacity = trim(file_get_contents("/sys/class/power_supply/BAT0/capacity"));lo que lo hace súper fácil y no depende de ninguna dependencia externa.
Amin NAIRI
67

Primero instale acpiejecutando este comando,

sudo apt-get install acpi

Entonces corre:

acpi

Salida de muestra:

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

O para una salida más detallada que se actualiza constantemente:

watch --interval=5 acpi -V

Salida:

Cada 5.0s: acpi -V mié 8 de enero 15:45:35 2014

Batería 0: llena, 100%
Adaptador 0: en línea
Térmico 0: ok, 44.0 grados C
Térmico 0: el punto de disparo 0 cambia al modo crítico a una temperatura de 127.0 grados C
Térmico 0: el punto de disparo 1 cambia al modo caliente a una temperatura de 127.0 grados C
Enfriamiento 0: intel_powerclamp no hay información de estado disponible
Enfriamiento 1: pkg-temp-0 no hay información de estado disponible
Enfriamiento 2: LCD 100 de 100
Enfriamiento 3: LCD 100 de 100
Enfriamiento 4: Procesador 0 de 10
Enfriamiento 5: Procesador 0 de 10
Enfriamiento 6: Procesador 0 de 10
Enfriamiento 7: Procesador 0 de 10
Enfriamiento 8: Procesador 0 de 10
Enfriamiento 9: Procesador 0 de 10
Enfriamiento 10: Procesador 0 de 10
Enfriamiento 11: Procesador 0 de 10
Suhaib
fuente
29

Gracias a @Wilf esto funciona en mi Ubuntu 17.10 en Lenovo Yoga 720:

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

Salida:

state:               fully-charged
percentage:          100%

O simplemente el valor numérico con este delineador

upower -i $(upower -e | grep '/battery') | grep --color=never -E percentage|xargs|cut -d' ' -f2|sed s/%//
rubo77
fuente
En Fedora 23 tuve que buscar grep en batterylugar de BAThacerlo funcionar. Lo encontré con upower --enumerate.
erik
grep para batterytrabajos en Ubuntu también, así que lo cambié deBAT
rubo77
28

Es suficiente escribir el comando

acpi

Para obtener información detallada, puede escribir

acpi -V

No tuve que instalar ningún paquete antes.

Sistema: Debian 7.2 64bit

usuario309404
fuente
19

Aquí hay un artículo sobre un paquete que puede verificar la duración de la batería en la línea de comando.

Básicamente, todo lo que tienes que hacer es:

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

Quizás puedas probar:

cat /proc/acpi/battery/BAT0/state

cat /proc/acpi/battery/BAT0/info

Mariano L
fuente
23
El uso /procpara almacenar información ACPI ha sido desaconsejado y en desuso desde 2.6.24. Ahora está adentro /sys/class/power_supply/BAT0.
Terry Wang
14

Llego un poco tarde a la fiesta, pero aquí está mi pequeña contribución. En base a las respuestas anteriores, he creado una potencia de secuencia de comandos simple:

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

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

La salida para ejecutar esto (./batpower) será algo como esto:

POWER_SUPPLY_CAPACITY=23

NB: el número de la batería puede ser diferente para usted, en mi caso es BAT1, pero siempre puede averiguarlo haciendo clic en / sys / class / power_supply o como Lekensteyn mencionó a través de upower -e

Mi máquina: Ubuntu 13.10, 3.11.0

Reemplace BAT1 en el código bash anterior a BAT0 si tiene una versión anterior de Ubuntu, es decir, 13.04 o posterior.

SCRIPT MEJORADO: desde mi publicación original, he realizado una pequeña mejora en el script:

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

Como siempre, preste atención a los espacios con bash. Todo esto se explica por sí mismo. Si la batería está presente, aparecerá, de lo contrario, el script se lo indicará. Ahora, vaya a su archivo .bashrc y agregue $ (batpower) a su solicitud. Aquí está mi mensaje:

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

Actualice su terminal o abra una nueva pestaña o ventana, ¡y ahora puede controlar la carga de la batería constantemente en la terminal! incluyendo tty! ¡Que se elogien las secuencias de comandos! ingrese la descripción de la imagen aquí

Sergiy Kolodyazhnyy
fuente
Necesita verificar /sys/class/power_supply/BAT0y /sys/class/power_supply/BAT1... Puede ser cualquiera. Y deberías usar esa ruta ( /sys/class/power_supply/BAT#).
dylnmc
En mi netbook Ubuntu 12.04 (después de cambiar a BAT0), parece que no obtengo una línea POWER_SUPPLY_CAPACITY. Sin embargo, parece que podría calcularlo a partir de los valores POWER_SUPPLY_CHARGE_FULL y POWER_SUPPLY_CHARGE_NOW.
mwfearnley
Upvoted pero Batman (Battery Manager) inconscientemente suena mejor que Batpower :) En una nota seria, es interesante que estuvieras escribiendo en AskUbuntu en 2014 y cuán diferente eres hoy.
WinEunuuchs2Unix
@ WinEunuuuchs2Unix Sí, he cambiado un poco desde que empecé, aprendí algunos trucos nuevos. Batman tendría un buen anillo, pero es probable que tenga derechos de autor;)
Sergiy Kolodyazhnyy
10

Puede hacerlo sin instalar ningún paquete adicional:

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

Este comando se levanta de la fuente de byobu . Podría ser un buen candidato para un alias Bash .

ændrük
fuente
+1 de mi parte! CLI FTW. Si tiene 2 baterías, cambie BAT0 por BAT1 :)
Rinzwind
Es desalentador desde 2.6.24, deberíamos usar/sys/class/power_supply/BAT0/
Pablo A
9

Ejecute el siguiente comando en una terminal para obtener información detallada:

cat /proc/acpi/battery/BAT0/info

Si solo quieres que el estado haga:

cat /proc/acpi/battery/BAT0/state
MEM
fuente
Esto se ha desalentado en la otra respuesta idéntica.
Pablo A
6

Instale acpi, luego use watchpara monitorear continuamente a través de la línea de comando.

P.ej

watch --interval=5 acpi -V

mostrará la información que se muestra a continuación y se actualizará cada 5 segundos.

Batería 0: completa, 100%, información de velocidad no disponible
Batería 0: capacidad de diseño 6000 mAh, última capacidad total 3424 mAh = 57%

La pregunta es ¿por qué alguien haría esto? Bueno, tengo una computadora portátil con pantalla LCD rota que ahora estoy usando como mi caja de bittorrent.

quemadura de hielo
fuente
5

Esto hizo el trabajo para mí en ubuntu 14.04:

cat /sys/class/power_supply/BAT0/capacity
el Santo
fuente
4

Iba a sugerir, acpipero después de leerlo no funciona en 11.10, tuve una idea.

Escriba esto en su terminal: ls /proc/acpi/battery/BAT0 oBAT1

Si obtiene un "archivo o directorio no encontrado", entonces esto no va a funcionar.

Pero, si enumera archivos, entonces aquí hay un script [péguelo en / usr / games / u otro directorio en $ PATH, y ejecútelo sudo chmod +x /usr/games/batterypercent, o lo que sea que usted nombre] que acabo de escribir para usted que le dará un porcentaje estimado de batería [Vea abajo]:

(Tenga en cuenta que, si aún no está instalado, instale el programa calcdesde el repositorio 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)%

He probado este script en mi computadora portátil. Digo estimar arriba porque acpimuestra 93% de batería, y mi script muestra 90% de batería, así que intente este script contra su porcentaje de batería de GUI y vea qué tan apagado está. En mi caso, parece ser consistentemente un 3% más bajo que el porcentaje de acpi. En ese caso, puede agregar esta línea justo antes de la última línea: percent=$((percent + 3))donde "3" es el porcentaje bajo.

** En mi lenovo, la batería aparece como BAT1, inténtalo también. (12.04 LTS)

Mate
fuente
Matt, probó su sugerencia, obtuvo un "Sin archivo o directorio"
Joe
Argh ... bueno, estoy casi seguro de que es por eso acpi que no funciona, porque supongo que 11.10 tampoco es compatible con las funciones ACPI de su computadora portátil [batería, etc.]. Creo que he experimentado algo como esto al actualizar en el pasado. Sin embargo, todavía estoy en 11.04. Lo siento, esto no funcionó para ti :(
Matt
Entonces, por curiosidad, ¿puedes pegar la salida de ls /proc/acpi/? Gracias
Matt
1

Script similar sin calc ni 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
fuente
1

Aquí está lo que uso. Simplemente observa la diferencia entre la carga completa y la carga actual, así como para ver si la carga está cayendo, en cuyo caso utiliza la notificación para alertar al usuario.

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

Podemos hacer eco del porcentaje con ese comando

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

sesenta y cinco%

en caso de que necesite extraer ese valor

intika
fuente
0

Esto no ayudará a todos, pero a mí sí. Utilizo byobu cada vez que uso un terminal, y la batería es una de las opciones para la barra de notificaciones de estado.

sheepeatingtaz
fuente
0

Puedes escribir:

$ 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
SebMa
fuente
-4
cat /proc/acpi/ac_adapter/AC/state
Todd Harris
fuente
3
No estoy seguro de lo que estás hablando aquí. ejecutarlo en la terminal diocat: /proc/acpi/ac_adapter/AC0/state: No such file or directory
infoquad