Como verificar o status da bateria usando o terminal?

274

Eu gostaria de um comando que verifique o status da bateria através do terminal

    
por Joe 20.10.2011 / 03:24

18 respostas

288

O comando abaixo exibe um status de lote e informações estatísticas sobre a bateria. O caminho /org/... pode ser encontrado com o comando upower -e ( --enumerate ).

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

Exemplo de saída:

  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

Você pode usar ferramentas como o grep para obter apenas as informações desejadas de todas as saídas.

Uma maneira simples: colocar o comando acima em

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

saídas:

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

Se você frequentemente gostaria de executar esse comando, então poderia criar um alias Bash para o comando inteiro. Exemplo:

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

Adicione isso ao final do seu arquivo .bashrc, e você pode digitar 'bat' a qualquer momento, no terminal.

Existe também um comando upower -d ( --dump ) que mostra informações de todos os recursos de energia disponíveis, como baterias de laptop, mouses externos, etc.

    
por Lekensteyn 09.02.2012 / 18:42
105

Um lembrete amigável : desde que o kernel do Linux 2.6.24 usando /proc para armazenar informações da ACPI foi desencorajado e reprovado .

Agora somos encorajados a usar - > /sys/class/power_supply/BAT0 .

UPDATE: Linux 3.19 e em diante, devemos olhar para o seguinte diretório - > /sys/class/power_supply/BAT1/

Por exemplo capacidade - > %código% status - > cat /sys/class/power_supply/BAT1/capacity

    
por Terry Wang 17.06.2013 / 10:35
60

Primeiro, instale acpi executando este comando,

sudo apt-get install acpi

Em seguida, execute:

acpi

Exemplo de saída:

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

Ou para uma saída mais detalhada que atualiza constantemente:

watch --interval=5 acpi -V

Saída:

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
    
por Suhaib 24.11.2012 / 21:20
27

Graças a @Wilf isso funciona no meu Ubuntu 17.10 no Lenovo Yoga 720:

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

Saída:

state:               fully-charged
percentage:          100%

Ou apenas o valor numérico com este forro

upower -i $(upower -e | grep '/battery') | grep --color=never -E percentage|xargs|cut -d' ' -f2|sed s/%//
    
por rubo77 02.07.2014 / 10:56
24

É suficiente digitar o comando

% bl0ck_qu0te%

Para informações detalhadas, você pode digitar

% bl0ck_qu0te%

Eu não precisei instalar nenhum pacote antes.

Sistema: Debian 7.2 64 bits

    
por user309404 26.07.2014 / 16:36
16

Talvez você possa tentar:

cat /proc/acpi/battery/BAT0/state

cat /proc/acpi/battery/BAT0/info

    
por Mariano L 20.10.2011 / 07:36
16

Aqui é um artigo sobre um pacote que pode verificar o seu vida da bateria na linha de comando.

Basicamente, tudo o que você precisa fazer é:

sudo apt-get install acpi
acpi -V
    
por josh-fuggle 10.06.2011 / 06:57
12

Estou um pouco atrasado para a festa, mas aqui está minha pequena contribuição. Com base nas respostas anteriores, criei um script de batuta simples:

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

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

A saída para executar isso (./batpower) será algo assim:

POWER_SUPPLY_CAPACITY=23

N.B. : o número da pilha pode ser diferente para você, no meu caso é BAT1, mas você sempre pode encontrá-lo por cd'ing para / sys / class / power_supply ou como Lekensteyn mencionado através de uper -e

Minha máquina: Ubuntu 13.10, 3.11.0

Substitua BAT1 no código bash acima para BAT0 se você tiver uma versão mais antiga do Ubuntu, ou seja, 13.04 ou posterior.

SCRIPT MELHORADO: Desde o meu post original, fiz uma pequena melhoria no 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 sempre, preste atenção aos espaços com bash. Isso tudo é auto-explicativo. Se a bateria estiver presente, ela aparecerá, se não - o script lhe dirá isso. Agora, vá para o seu arquivo .bashrc e adicione $ (batpower) ao seu prompt. Aqui está o meu promt:

PS1='[$(batpower)]\n${debian_chroot:+($debian_chroot)}[*\[email protected]*]:\w\$ ' 

Atualize seu terminal ou abra uma nova aba ou janela, e agora você pode monitorar a carga da bateria constantemente no terminal! incluindo tty! Que o script seja elogiado!

    
por Sergiy Kolodyazhnyy 23.07.2014 / 05:23
9

Execute o seguinte comando em um terminal para obter informações detalhadas:

cat /proc/acpi/battery/BAT0/info

Se você quer apenas que o estado faça:

cat /proc/acpi/battery/BAT0/state
    
por MEM 19.04.2011 / 14:20
9

Você pode fazer isso sem instalar nenhum pacote extra:

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

Este comando é retirado da fonte do byobu . Pode ser um bom candidato para alias de Bash .

    
por ændrük 10.06.2011 / 07:35
5

Instale o acpi e use watch para monitorar continuamente a linha de comando.

Por exemplo,

watch --interval=5 acpi -V

mostrará as informações abaixo e atualizará a cada 5 segundos.

% bl0ck_qu0te%

A questão é por que alguém faria isso? Bem, eu tenho um laptop com tela LCD quebrada que agora estou usando como minha caixa de bittorrent.

    
por iceburn 30.08.2011 / 22:33
5

Isso fez o trabalho para mim no Ubuntu 14.04:

cat /sys/class/power_supply/BAT0/capacity
    
por the_saint 23.11.2014 / 14:29
4

Eu ia sugerir acpi , mas depois de ler que não está funcionando em 11,10, eu tive uma ideia.

Por favor digite isto no seu terminal: ls /proc/acpi/battery/BAT0 ou BAT1

Se você receber um "arquivo ou diretório não encontrado", isso não funcionará.

Mas, se ele listar arquivos, aqui está um script [cole em / usr / games / ou outro diretório em $ PATH, e execute sudo chmod +x /usr/games/batterypercent , ou qualquer nome que você aponte] Acabei de escrever para você que lhe dará uma estimativa de porcentagem de bateria [Veja abaixo]:

(Nota, se ainda não estiver instalado, instale o programa calc do repo: sudo apt-get install apcalc )

#!/bin/bash
math() { calc -d "[email protected]"|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)%

Eu testei esse script no meu laptop. Eu digo estimativa acima porque acpi mostra 93% da bateria, e meu script mostra 90% da bateria, então experimente este script com a porcentagem da sua bateria GUI e veja como ele está. No meu caso, parece ser consistentemente 3% menor do que o percentual de acpi. Nesse caso, você pode adicionar esta linha logo antes da última linha: percent=$((percent + 3)) , onde "3" é a porcentagem baixa.

** No meu lenovo, a bateria está listada como BAT1, tente isso também. (12,04 LTS)

    
por Matt 20.10.2011 / 04:42
1

Script semelhante sem calc ou 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"
    
por xerostomus 15.11.2014 / 19:24
1

Aqui está o que eu uso. Ele apenas analisa a diferença entre a carga total e a carga atual, além de ver se a carga está caindo, caso em que ela usa notificar para alertar o usuário.

#!/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
    
por Mark Simmons 28.02.2016 / 13:47
0

Isso não ajudará a todos, mas foi o que fiz comigo - uso byobu sempre que estou usando um terminal e bateria é uma das opções para a barra de notificações de status.

    
por sheepeatingtaz 07.01.2016 / 09:41
0

Podemos ecoar apenas a porcentagem com esse comando

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

65%

caso você precise extrair esse valor

    
por intika 25.03.2018 / 13:56
-2
cat /proc/acpi/ac_adapter/AC/state
    
por Todd Harris 19.04.2011 / 14:03
-2

Isso funciona:

cat /proc/acpi/ac_adapter/AC0/state
    
por xerostomus 15.11.2014 / 18:35