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

320

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

Joe
fonte
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.

Lekensteyn
fonte
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
Terry Wang
fonte
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
Suhaib
fonte
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/%//
rubo77
fonte
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

user309404
fonte
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
josh-fuggle
fonte
18

Talvez você possa tentar:

cat /proc/acpi/battery/BAT0/state

cat /proc/acpi/battery/BAT0/info

Mariano L
fonte
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

Sergiy Kolodyazhnyy
fonte
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 .

ændrük
fonte
+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
MEM
fonte
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.

iceburn
fonte
5

Isso fez o trabalho para mim no ubuntu 14.04:

cat /sys/class/power_supply/BAT0/capacity
o Santo
fonte
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
fonte
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"
xerostomus
fonte
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
Mark Simmons
fonte
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

intika
fonte
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.

sheepeatingtaz
fonte
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
SebMa
fonte
-4
cat /proc/acpi/ac_adapter/AC/state
Todd Harris
fonte
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