如何通过终端查看电池状态?


320

我想要一个在终端中显示电池状态的命令。


29
$ upower -i $(upower -e | grep 'BAT') | grep -E "state|to\ full|percentage"
杰克·伯杰

Answers:


335

以下命令输出有关电池的大量状态和统计信息。/org/...可以使用命令upower -e--enumerate)找到该路径。

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

输出示例:

  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

您可以使用grep之类的工具从所有输出中获取所需的信息。

一种简单的方法:将上述命令传递到

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

输出:

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

如果您经常想运行该命令,则可以为整个命令设置一个Bash别名。例:

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

将其添加到.bashrc文件的末尾,您可以随时在终端中键入“ bat”。

还有一个upower -d--dump)命令显示有关所有可用电源资源的信息,例如笔记本电脑电池,外部鼠标等。


9
upower --enumerate如果您不确定如何使用,则可能会有用upower
landroni 2014年

5
@landroni的简写选项是upower -e,该命令列出了的可用路径upower -i ...。如果您很懒,只想列出所有设备,请使用upower -dupower --dump)。
Lekensteyn 2014年

1
确实。我认为这将是对答案本身的有益补充,因为当我第一次尝试使用时,upower我立即迷路了。
landroni 2014年

1
@landroni好点,我已经更新了答案。如果您还有其他相关内容,请随时进行编辑。
Lekensteyn 2014年

8
另一个单行可能是upower -i $(upower -e | grep BAT) | grep --color=never -E "state|to\ full|to\ empty|percentage"
Wilf

124

友情提醒:因为Linux内核2.6.24使用/proc存储ACPI信息已经气馁弃用

现在鼓励我们使用-> /sys/class/power_supply/BAT0

更新:Linux 3.19及更高版本,我们应该查看以下目录-> /sys/class/power_supply/BAT1/

例如,在运行Linux 4.20的Arch Linux上检查容量和状态->

# 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
具体来说,/sys/class/power_supply/BAT0/capacity似乎显示了当前的充电百分比。
thomasa88 '18

已弃用...它仍然有效吗?
neverMind9

3
+1,这应该是公认的答案,因为它不依赖于可能未安装且不需要回答此问题的额外软件。@ neverMind9:我不知道您的意思/proc已经过时了,但/sys即使是在4.20内核中,它也对我来说很完美。
comfreak

1
@comfreak实际上也对我有用。
neverMind9

1
不仅这应该是接受者的答案,而且可以通过使用任何具有readPHP之类功能的编程语言来实现数据检索,$capacity = trim(file_get_contents("/sys/class/power_supply/BAT0/capacity"));从而使其变得超级简单,并且不受任何外部依赖关系的影响。
Amin NAIRI

67

首先acpi通过运行此命令进行安装,

sudo apt-get install acpi

然后运行:

acpi

样本输出:

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

或更详细的输出会不断更新:

watch --interval=5 acpi -V

输出:

每5.0秒:acpi -V 2014年1月8日星期三15:45:35

电池0:充满电,100%
适配器0:在线
散热0:正常,44.0摄氏度
温度0:跳变点0在温度127.0摄氏度下切换至临界模式
温度0:跳变点1切换到温度127.0摄氏度的高温模式
冷却0:intel_powerclamp无状态信息可用
冷却1:pkg-temp-0无状态信息可用
冷却2:LCD 100 of 100
冷却3:LCD 100之100
冷却4:处理器0之10
冷却5:处理器0之10
冷却6:处理器0之10
冷却7:处理器0之10
冷却8:处理器0之10
冷却9:处理器0之10
冷却10:处理器0之10
冷却11:处理器0之10

29

感谢@Wilf,这可以在我在Lenovo Yoga 720上的Ubuntu 17.10上运行:

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

输出:

state:               fully-charged
percentage:          100%

或者只用这根线的数值

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

Fedora 23上,我不得不grep battery而不是BAT使其工作。我发现了upower --enumerate
erik

grep也battery适用于Ubuntu,所以我从BAT
rubo77 '18

28

键入命令就足够了

acpi

有关详细信息,您可以键入

acpi -V

我以前不必安装任何软件包。

系统:Debian 7.2 64位


19

是包装上的文章,可以在命令行上检查电池寿命。

基本上,您要做的就是:

sudo apt-get install acpi
acpi -V

18

也许您可以尝试:

cat /proc/acpi/battery/BAT0/state

cat /proc/acpi/battery/BAT0/info


23
/proc从2.6.24开始,不建议使用和存储ACPI信息。现在在/sys/class/power_supply/BAT0
Terry Wang

14

我参加聚会有点晚了,但这是我的一点贡献。根据前面的答案,我做了一个简单的脚本batpower:

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

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

执行此(./batpower)的输出将如下所示:

POWER_SUPPLY_CAPACITY=23

注意:对于您来说,batery编号可能会有所不同,在我的情况下是BAT1,但是您始终可以通过cd / cd / class / power_supply或Lekensteyn在upower -e中提到来找到它

我的电脑:Ubuntu 13.10,3.11.0

如果您使用的是Ubuntu 13.04或更高版本,则将上述bash代码中的BAT1替换为BAT0

改进的脚本:自从我的原始文章以来,我对该脚本进行了一些小的改进:

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

与往常一样,请注意带有bash的空格。这全是自我解释。如果有电池,它将显示,如果没有,则脚本将告诉您。现在,转到您的.bashrc文件,并将$(batpower)添加到提示中。这是我的提示:

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

更新您的终端或打开新的标签或窗口,现在您可以在终端中不断监视电池电量!包括tty!愿脚本受到称赞! 在此处输入图片说明


您需要检查/sys/class/power_supply/BAT0/sys/class/power_supply/BAT1...可以是。您应该使用该路径(/sys/class/power_supply/BAT#)。
dylnmc 2015年

在我的Ubuntu 12.04上网本中(更改为BAT0之后),我似乎没有得到POWER_SUPPLY_CAPACITY行。看起来我可以从POWER_SUPPLY_CHARGE_FULL和POWER_SUPPLY_CHARGE_NOW值进行计算。
mwfearnley

受到鼓舞,但蝙蝠侠(电池经理)在潜意识里比蝙蝠力量好得多:)值得一提的是,有趣的是,您在2014年在AskUbuntu上撰写的文章以及您今天有何不同。
WinEunuuchs2Unix

@ WinEunuuuchs2Unix是的,自开始以来我已经有所改变,学习了一些新技巧。蝙蝠侠会喜欢它的戒指,但很可能已获得版权;)
Sergiy Kolodyazhnyy

10

您可以执行此操作而无需安装任何其他软件包:

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

该命令是从byobu的源头提出的。它可能是Bash别名的不错选择。


向我+1!CLI FTW。如果您有2个电池,将BAT0换为BAT1 :)
Rinzwind'6

自2.6.24以来不鼓励使用,我们应该使用/sys/class/power_supply/BAT0/
Pablo A

9

在终端中运行以下命令以获取详细信息:

cat /proc/acpi/battery/BAT0/info

如果您只想要状态,请执行以下操作:

cat /proc/acpi/battery/BAT0/state

在其他相同的答案中不建议这样
Pablo A

6

安装acpi,然后用于watch通过命令行连续监视。

例如

watch --interval=5 acpi -V

将显示如下信息,并且每5秒更新一次。

电池0:电量不足,100%,速率信息不可用
电池0:设计容量6000 mAh,上一次充满电3424 mAh = 57%

问题是为什么有人要这样做?好吧,我有一台笔记本电脑的LCD屏幕坏了,现在用作我的Bittorrent盒子。


5

这在Ubuntu 14.04中为我完成了工作:

cat /sys/class/power_supply/BAT0/capacity

4

我本来是要建议的,acpi但是看完它在11.10中不起作用之后,我有了一个主意。

请您的终端类型是: ls /proc/acpi/battery/BAT0BAT1

如果收到“找不到文件或目录”,则此操作将无效。

但是,如果它列出了文件,则是我刚刚为您编写的脚本[将其粘贴到/ usr / games /或$ PATH中的其他目录中,然后运行sudo chmod +x /usr/games/batterypercent,或您命名的任何名称],它将为您提供估计的电池电量百分比[见下文]:

(请注意,如果尚未安装,安装程序calc从回购: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)%

我已经在笔记本电脑上测试了此脚本。我说上面的估计是因为acpi显示93%的电池电量,而我的脚本显示90%的电池电量,因此请针对您的GUI电池百分比尝试此脚本,并查看情况如何。就我而言,它似乎始终比acpi的百分比低3%。在这种情况下,您可以在最后一行之前添加此行:percent=$((percent + 3)),其中“ 3”是其下限的百分比。

**在我的联想中,电池列为BAT1,也可以尝试。(12.04 LTS)


马特(Matt),尝试了您的建议,得到了“无文件或目录”

Argh ..好的,我几乎是肯定的,这就是为什么 acpi它不起作用的原因,因为我想11.10也不支持笔记本电脑的ACPI功能(电池等)。我认为过去升级时遇到了类似情况。我仍然在11.04。抱歉,这对您不起作用:(
马特

所以,只是好奇,您能粘贴输出ls /proc/acpi/吗?谢谢
马特

1

没有calc或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

这是我用的。它只是查看充满电和当前电量之间的差异,并查看电量是否在下降,在这种情况下,它使用通知来提醒用户。

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

我们可以使用该命令仅回显百分比

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

65%

如果您需要提取该值


0

这对所有人都没有帮助,但确实对我有所帮助- 每当我使用终端时,我都会使用byobu,电池是状态通知栏的选项之一。


0

您可以输入:

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

要么

$ 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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.