Como verifico o status da bateria através do terminal?


320

Eu gostaria de um comando que exibe o status da bateria no terminal.


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

Respostas:


335

O comando abaixo gera muito status e informações estatísticas sobre a bateria. O /org/...caminho 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 grep para obter apenas as informações desejadas de toda essa saída.

Uma maneira simples: canalizar o comando acima para

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

saídas:

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

Se você costuma executar esse comando, pode criar um alias do Bash para todo o comando. 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ê poderá digitar 'bat' a qualquer momento, no terminal.

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


9
upower --enumeratepode ser útil se você não tiver certeza de como usá-lo upower.
landroni

5
@landroni E a opção abreviada é upower -eque esse comando lista os caminhos disponíveis para upower -i .... Se você é preguiçoso e deseja apenas uma lista de todos os dispositivos, use upower -d( upower --dump).
Lekensteyn

1
De fato. Eu acho que isso seria uma adição útil à resposta em si, pois quando tentei usá-lo upower, imediatamente me perdi.
landroni

1
@landroni Bom ponto, eu atualizei a resposta. Sinta-se à vontade para editá-lo se você tiver mais adições relacionadas.
Lekensteyn

8
Outra one-liner poderia serupower -i $(upower -e | grep BAT) | grep --color=never -E "state|to\ full|to\ empty|percentage"
Wilf

124

Um lembrete amigável : desde o kernel Linux 2.6.24, o uso /procpara armazenar informações da ACPI foi desencorajado e obsoleto .

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

ATUALIZAÇÃO: Linux 3.19 em diante, devemos procurar o seguinte diretório -> /sys/class/power_supply/BAT1/

Por exemplo, verificando capacidade e status no Arch Linux executando o 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
Especificamente, /sys/class/power_supply/BAT0/capacityparece mostrar a porcentagem de cobrança atual.
precisa saber é o seguinte

Descontinuado ... ainda funciona?
neverMind9

3
+1, essa deve ser a resposta aceita, pois não depende de software extra que pode não estar instalado e não é necessário para responder a essa pergunta. @ neverMind9: Eu não sei o que você quer dizer com " /procobsoleto", mas /sysfunciona perfeitamente para mim, mesmo no kernel 4.20.
comfreak 15/01

1
@comfreak Funciona para mim também, na verdade.
neverMind9 16/01

1
Não apenas essa deve ser a resposta aceitável, mas a recuperação dos dados pode ser obtida usando qualquer linguagem de programação que tenha uma readfunção como a do PHP, $capacity = trim(file_get_contents("/sys/class/power_supply/BAT0/capacity"));tornando-a super fácil e não depende de nenhuma dependência externa.
Amin NAIRI

67

Primeiro instale acpiexecutando este comando,

sudo apt-get install acpi

Então corra:

acpi

Saída de amostra:

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

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

watch --interval=5 acpi -V

Resultado:

A cada 5.0s: acpi -V qua 08/01 15:45:35 2014

Bateria 0: Cheia, 100%
Adaptador 0: on-line
Térmica 0: ok, 44,0 graus C
Térmica 0: o ponto de disparo 0 muda para o modo crítico à temperatura 127,0 graus C
Térmica 0: o ponto de disparo 1 muda para o modo quente a temperatura 127,0 graus C
Refrigeração 0: intel_powerclamp nenhuma informação de estado disponível
Refrigeração 1: pkg-temp-0 nenhuma informação de estado disponível
Arrefecimento 2: LCD 100 de 100
Arrefecimento 3: LCD 100 de 100
Cooling 4: Processador 0 de 10
Cooling 5: Processador 0 de 10
Cooling 6: Processador 0 de 10
Cooling 7: Processador 0 de 10
Cooling 8: Processador 0 de 10
Cooling 9: Processador 0 de 10
Cooling 10: Processador 0 de 10
Cooling 11: Processador 0 de 10

29

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"

Resultado:

state:               fully-charged
percentage:          100%

Ou apenas o valor numérico com este revestimento

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

No Fedora 23, eu tive que cumprimentar, em batteryvez de BATfazê-lo funcionar. Eu descobri isso com upower --enumerate.
Erik

grep para batteryobras em Ubuntu também, então eu mudei deBAT
rubo77

28

Basta digitar o comando

acpi

Para informações detalhadas, você pode digitar

acpi -V

Eu não precisava instalar nenhum pacote antes.

Sistema: Debian 7.2 64bit


19

Aqui está um artigo sobre um pacote que pode verificar a duração da bateria na linha de comando.

Basicamente, tudo o que você precisa fazer é:

sudo apt-get install acpi
acpi -V

18

Talvez você possa tentar:

cat /proc/acpi/battery/BAT0/state

cat /proc/acpi/battery/BAT0/info


23
o uso /procpara armazenar informações da ACPI foi desencorajado e descontinuado desde 2.6.24. Agora é no /sys/class/power_supply/BAT0.
Terry Wang

14

Estou um pouco atrasado para a festa, mas aqui está minha pequena contribuição. Com base nas respostas anteriores, criei um script power 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 como isto:

POWER_SUPPLY_CAPACITY=23

Nota: o número da bateria pode ser diferente para você, no meu caso, é BAT1, mas você sempre pode descobrir ao ligar para / sys / class / power_supply ou como Lekensteyn mencionou em upower -e

Minha máquina: Ubuntu 13.10, 3.11.0

Substitua BAT1 no código bash acima para BAT0 se você tiver a versão mais antiga 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 será exibida, se não - o script informará. 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)}[*\u@Ubuntu*]:\w\$ ' 

Atualize seu terminal ou abra uma nova guia ou janela e agora você pode monitorar a carga da bateria constantemente no terminal! incluindo tty! Que o script seja elogiado! insira a descrição da imagem aqui


Você precisa procurar /sys/class/power_supply/BAT0e /sys/class/power_supply/BAT1... Pode ser também. E você deve usar esse caminho ( /sys/class/power_supply/BAT#).
Dllnmc

No meu netbook Ubuntu 12.04 (depois de mudar para BAT0), não consigo obter uma linha POWER_SUPPLY_CAPACITY. Parece que eu poderia calculá-lo, a partir dos valores POWER_SUPPLY_CHARGE_FULL e POWER_SUPPLY_CHARGE_NOW.
Mkfearnley

Voto a favor, mas Batman (Battery Manager) inconscientemente tem um toque mais agradável do que o Batpower :) Em uma observação séria, é interessante que você estava escrevendo no AskUbuntu em 2014 e quão diferente você é hoje.
WinEunuuchs2Unix 12/07

@ WinEunuuuchs2Unix Sim, eu mudei um pouco desde que comecei, aprendi alguns truques novos. batman teria um belo anel, mas provavelmente está protegido por direitos autorais;)
Sergiy Kolodyazhnyy

10

Você pode fazer isso sem instalar nenhum pacote extra:

$ 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 é retirado da fonte do byobu . Pode ser um bom candidato para um alias do Bash .


+1 de mim! CLI FTW. Se você tem BAT0 alteração 2 da bateria para BAT1 :)
Rinzwind

É desencorajado desde 2.6.24, devemos usar/sys/class/power_supply/BAT0/
Pablo A

9

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

cat /proc/acpi/battery/BAT0/info

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

cat /proc/acpi/battery/BAT0/state

Isso foi desencorajado na outra resposta idêntica.
Pablo A

6

Instale o acpi e use-o watchpara monitorar continuamente através da linha de comando.

Por exemplo

watch --interval=5 acpi -V

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

Bateria 0: Cheia, 100%, informações de taxa indisponíveis
Bateria 0: capacidade de projeto 6000 mAh, última capacidade total 3424 mAh = 57%

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


5

Isso fez o trabalho para mim no ubuntu 14.04:

cat /sys/class/power_supply/BAT0/capacity

4

Eu ia sugerir, acpimas depois de ler não está funcionando em 11h10, tive uma ideia.

Digite isso no seu terminal: ls /proc/acpi/battery/BAT0 ouBAT1

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

Mas, se ele listar arquivos, eis um script [cole-o em / usr / games / ou outro diretório em $ PATH e execute sudo chmod +x /usr/games/batterypercent, ou qualquer que seja o nome que você indicar] que acabei de escrever para você, que fornecerá uma porcentagem estimada de bateria [Ver abaixo]:

(Nota, se já não estiver instalado, instale o programa calca partir do 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)%

Eu testei esse script no meu laptop. Digo a estimativa acima porque acpimostra 93% da bateria, e meu script mostra 90% da bateria, então tente esse script com base na porcentagem de bateria da GUI e veja como está desligado. No meu caso, parece ser consistentemente 3% menor que a porcentagem da ACPI. Nesse caso, você pode adicionar esta linha logo antes da última linha:, percent=$((percent + 3))onde "3" é a porcentagem em que está baixa.

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


Matt, tentou sua sugestão, obteve um "Nenhum arquivo ou diretório"
Joe

Argh .. ok, estou quase certo de que é por isso acpi que não funciona, porque eu acho que a 11.10 não suporta as funções ACPI do seu laptop também [bateria, etc]. Acho que experimentei algo assim ao atualizar no passado. Ainda estou no 11.04. Desculpe que este não funcionou para ya :(
Matt

Então, apenas curioso, você pode colar a saída de ls /proc/acpi/? Obrigado
Matt

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"

1

Aqui está o que eu uso. Ele apenas analisa a diferença entre a cobrança total e a cobrança atual, além de verificar se a cobrança está caindo; nesse caso, ela usa a notificação 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

1

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


0

Isso não vai ajudar a todos, mas ajudou - eu uso o byobu sempre que estou usando um terminal, e a bateria é uma das opções da barra de notificações de status.


0

Você pode digitar:

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

ou

$ 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
não tenho certeza do que você está falando aqui. executá-lo no terminal deucat: /proc/acpi/ac_adapter/AC0/state: No such file or directory
infoquad 19/04/11
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.