Respostas:
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.
upower --enumerate
pode ser útil se você não tiver certeza de como usá-lo upower
.
upower -e
que 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
).
upower
, imediatamente me perdi.
upower -i $(upower -e | grep BAT) | grep --color=never -E "state|to\ full|to\ empty|percentage"
Um lembrete amigável : desde o kernel Linux 2.6.24, o uso /proc
para 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
/sys/class/power_supply/BAT0/capacity
parece mostrar a porcentagem de cobrança atual.
/proc
obsoleto", mas /sys
funciona perfeitamente para mim, mesmo no kernel 4.20.
read
funçã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.
Primeiro instale acpi
executando 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
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/%//
battery
vez de BAT
fazê-lo funcionar. Eu descobri isso com upower --enumerate
.
battery
obras em Ubuntu também, então eu mudei deBAT
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
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
Talvez você possa tentar:
cat /proc/acpi/battery/BAT0/state
cat /proc/acpi/battery/BAT0/info
/proc
para armazenar informações da ACPI foi desencorajado e descontinuado desde 2.6.24. Agora é no /sys/class/power_supply/BAT0
.
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!
/sys/class/power_supply/BAT0
e /sys/class/power_supply/BAT1
... Pode ser também. E você deve usar esse caminho ( /sys/class/power_supply/BAT#
).
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 .
/sys/class/power_supply/BAT0/
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
Instale o acpi e use-o watch
para 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.
Eu ia sugerir, acpi
mas 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 calc
a 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 acpi
mostra 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)
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 :(
ls /proc/acpi/
? Obrigado
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"
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
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.
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
cat /proc/acpi/ac_adapter/AC/state
cat: /proc/acpi/ac_adapter/AC0/state: No such file or directory
$ upower -i $(upower -e | grep 'BAT') | grep -E "state|to\ full|percentage"