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

Joe*_*Joe 386 battery command-line

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

Lek*_*eyn 394

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

upower -i /org/freedesktop/UPower/devices/battery_BAT0
Run Code Online (Sandbox Code Playgroud)

示例输出:

  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
Run Code Online (Sandbox Code Playgroud)

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

一种简单的方法:将上述命令通过管道传输到

grep -E "state|to\ full|percentage"
Run Code Online (Sandbox Code Playgroud)

输出:

state:               charging
time to full:        57.3 minutes
percentage:          42.5469%
Run Code Online (Sandbox Code Playgroud)

如果您经常想运行该命令,那么您可以为整个命令创建一个 Bash 别名。例子:

alias bat='upower -i /org/freedesktop/UPower/devices/battery_BAT0| grep -E "state|to\ full|percentage"'
Run Code Online (Sandbox Code Playgroud)

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

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

  • 如果你不确定如何使用 `upower`,`upower --enumerate` 会很有用。 (9认同)
  • 另一种单行可能是`upower -i $(upower -e | grep BAT) | grep --color=never -E "state|to\full|to\empty|percentage"` (8认同)
  • @landroni 简写选项是 `upower -e`,该命令列出了 `upower -i ...` 的可用路径。如果您很懒惰并且只想列出所有设备,请使用 `upower -d` (`upower --dump`)。 (6认同)

Ter*_*ang 176

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

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

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

例如,检查容量和运行状态

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
Run Code Online (Sandbox Code Playgroud)

Linux 5.9

# uname -a
Linux netbook 5.9.1-arch1-1 #1 SMP PREEMPT Sat, 17 Oct 2020 13:30:37 +0000 x86_64 GNU/Linux
# cat /sys/class/power_supply/BAT1/capacity
100
# cat /sys/class/power_supply/BAT1/status
Full
Run Code Online (Sandbox Code Playgroud)

  • 具体来说,`/sys/class/power_supply/BAT0/capacity` 似乎显示了当前的充电百分比。 (8认同)
  • +1,这应该是公认的答案,因为它不依赖于可能未安装且不需要回答此问题的额外软件。@neverMind9:我不知道你的意思是什么`/proc` 已被弃用,但`/sys` 对我来说非常适合,即使在内核 4.20 中也是如此。 (8认同)
  • Terry 也许在 Arch 上他们从 BAT1 开始,但似乎在 Ubuntu 上总是 BAT0,至少现在是这样,而且据我所知几乎所有便携式设备只使用一块电池(我不知道为什么 `acpi -b` 或 `acpitool -B` 输出三)。 (2认同)
  • 这不仅应该是接受者的答案,而且可以通过使用任何具有 `read` 功能的编程语言来实现检索数据,例如 PHP `$capacity = trim(file_get_contents("/sys/class/power_supply/BAT0/capacity "));` 使它变得非常简单并且不依赖于任何外部依赖项。 (2认同)

Suh*_*aib 77

已弃用 - 谢谢@morhook


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

sudo apt-get install acpi
Run Code Online (Sandbox Code Playgroud)

然后运行:

acpi
Run Code Online (Sandbox Code Playgroud)

示例输出:

Battery 0: Discharging, 61%, 01:10:12 remaining
Run Code Online (Sandbox Code Playgroud)

或者对于不断更新的更详细的输出:

watch --interval=5 acpi -V
Run Code Online (Sandbox Code Playgroud)

输出:

每 5.0 秒:acpi -V Wed Jan 8 15:45:35 2014

电池 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 of 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

  • 正如其他答案中所述,从内核 2.6.24 开始,acpi 工具已被弃用。 (2认同)
  • FWIW 现在是 2021 年 9 月,我正在运行 Ubuntu 21(预发布),效果很好。 (2认同)

rub*_*o77 32

感谢@Wilf,这适用于我在 Lenovo Yoga 720 上的 Ubuntu 17.10:

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

输出:

state:               fully-charged
percentage:          100%
Run Code Online (Sandbox Code Playgroud)

或者只是这个一个班轮的数值

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


小智 30

输入命令就够了

acpi

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

acpi -V

我之前不需要安装任何软件包。

系统:Debian 7.2 64位


小智 21

是一篇关于可以在命令行检查电池寿命的软件包的文章。

基本上,您所要做的就是:

sudo apt-get install acpi
acpi -V
Run Code Online (Sandbox Code Playgroud)

  • `acpi` 工具从内核 2.6.24 开始已被弃用,如 [morhook](https://askubuntu.com/users/170833/morhook) 等所述 (2认同)

Mar*_*o L 17

也许你可以试试:

cat /proc/acpi/battery/BAT0/state

cat /proc/acpi/battery/BAT0/info

  • 自 2.6.24 以来,不鼓励和弃用使用 `/proc` 来存储 ACPI 信息。现在它在`/sys/class/power_supply/BAT0`中。 (24认同)

Ser*_*nyy 15

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

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

grep POWER_SUPPLY_CAPACITY /sys/class/power_supply/BAT1/uevent
Run Code Online (Sandbox Code Playgroud)

执行这个( ./batpower )的输出将是这样的:

POWER_SUPPLY_CAPACITY=23
Run Code Online (Sandbox Code Playgroud)

注意:电池编号对您来说可能不同,在我的情况下它是 BAT1,但您总是可以通过 cd'ing 到 /sys/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 
Run Code Online (Sandbox Code Playgroud)

与往常一样,注意 bash 的空格。这都是不言自明的。如果有电池,它会显示出来,如果没有 - 脚本会告诉你。现在,转到您的 .bashrc 文件并将 $(batpower) 添加到您的提示中。这是我的提示:

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

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


ænd*_*rük 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%
Run Code Online (Sandbox Code Playgroud)

这个命令是从byobu 的来源解除。它可能是Bash alias 的一个很好的候选者。

  • 从2.6.24开始不鼓励,我们应该使用`/sys/class/power_supply/BAT0/` (2认同)

Seb*_*bMa 10

您可以输入:

$ acpi -i
Battery 0: Discharging, 98%, 02:51:14 remaining
Battery 0: design capacity 4400 mAh, last full capacity 3733 mAh = 84%
Run Code Online (Sandbox Code Playgroud)

或者

$ 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
Run Code Online (Sandbox Code Playgroud)

或使用发行版的 inxi 包(更多最新信息请参见此处的 inxi 官方源代码

$ inxi -Bxxx
Battery:   ID-1: BAT0 charge: 37.4 Wh condition: 37.4/47.5 Wh (79%) volts: 10.8/10.8 model: PA5109U-1BRS type: Li-ion 
           serial: FA80 status: Full 
Run Code Online (Sandbox Code Playgroud)


MEM*_*MEM 8

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

cat /proc/acpi/battery/BAT0/info
Run Code Online (Sandbox Code Playgroud)

如果你只是想让国家做:

cat /proc/acpi/battery/BAT0/state
Run Code Online (Sandbox Code Playgroud)

  • 这 [已被劝阻](https://askubuntu.com/questions/69556/how-do-i-check-the-batterys-status-via-the-terminal/102863#comment389649_69632) 在另一个相同的答案中。 (2认同)

小智 8

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

cat /sys/class/power_supply/BAT0/capacity
Run Code Online (Sandbox Code Playgroud)

  • `cat /sys/class/power_supply/BAT?/capacity` 会是一个更好的主意,因为它可能是 `BAT1` 而不是 `BAT0`。 (2认同)

小智 6

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

例如

watch --interval=5 acpi -V

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

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

问题是为什么有人会这样做?嗯,我有一台液晶屏坏了的笔记本电脑,我现在用它作为我的 bittorrent 盒子。