Contents

通过终端检查电池状态

1. 简介

根据我们使用的 Linux 发行版的桌面环境,我们的桌面上可能有也可能没有电池状态指示器。有时,我们可能需要使用命令行检查电池状态。

在本教程中,我们将介绍一些使用命令检查电池状态(充电状态和电量百分比)的方法。

2. 使用upower

** upower是 UPower 守护程序的命令行客户端**,它负责大多数 Linux 发行版上的系统范围的电源管理。在我们使用该命令获取电池信息之前,我们需要弄清楚连接电池的路径。这可以使用 upower -e或 upower –enumerate来完成:

$ upower -e
/org/freedesktop/UPower/devices/line_power_AC
/org/freedesktop/UPower/devices/battery_BAT0
/org/freedesktop/UPower/devices/DisplayDevice

第二行,设备名称以“battery..”开头,是我们要查找的。通常是battery_BAT0battery_BAT1,取决于我们使用的分布。

一旦我们有了这条路径,我们就可以继续使用upower -i获取有关电池的详细信息:

$ upower -i /org/freedesktop/UPower/devices/battery_BAT0
  native-path:          BAT0
  vendor:               LGC-LGC3.0
  model:                DELL 49VTP27
  serial:               14057
  power supply:         yes
  updated:              Monday 18 April 2022 07:45:28 AM (105 seconds ago)
  has history:          yes
  has statistics:       yes
  battery
    present:             yes
    rechargeable:        yes
    state:               charging
    warning-level:       none
    energy:              53.5464 Wh
    energy-empty:        0 Wh
    energy-full:         57.3981 Wh
    energy-full-design:  48.84 Wh
    energy-rate:         2.4531 W
    voltage:             12.564 V
    time to full:        1.6 hours
    percentage:          93%
    capacity:            100%
    technology:          lithium-ion
    icon-name:          'battery-full-charging-symbolic'
  History (rate):
    1650248128	2.453	charging

不用说,我们可以使用 grep 或其他命令将输出处理成我们需要的格式:

$ upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep percentage | grep -o "[0-9]*"
93
$ upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep state | cut -d ':' -f2 | xargs
charging

如今,大多数设备只有一块电池,因此**我们也可以使用带有*-d参数的upower*命令 。**这实际上打印了所有连接设备的信息:

$ upower -d
Device: /org/freedesktop/UPower/devices/line_power_AC
  native-path:          AC
  power supply:         yes
  updated:              Thursday 21 April 2022 07:42:11 AM (658 seconds ago)
  has history:          no
  has statistics:       no
  line-power
    warning-level:       none
    online:              yes
    icon-name:          'ac-adapter-symbolic'
Device: /org/freedesktop/UPower/devices/battery_BAT0
  native-path:          BAT0
  vendor:               LGC-LGC3.0
  model:                DELL 49VTP27
  serial:               14057
  power supply:         yes
  updated:              Thursday 21 April 2022 07:52:12 AM (57 seconds ago)
  has history:          yes
  has statistics:       yes
  battery
    present:             yes
    rechargeable:        yes
    state:               charging
    warning-level:       none
    energy:              48.507 Wh
    energy-empty:        0 Wh
    energy-full:         57.3981 Wh
    energy-full-design:  48.84 Wh
    energy-rate:         7.1262 W
    voltage:             12.544 V
    time to full:        1.2 hours
    percentage:          93%
    capacity:            100%
    technology:          lithium-ion
    icon-name:          'battery-full-charging-symbolic'
  History (rate):
    1650507732	7.126	charging
....more info

该命令相当于运行 upower -e,然后 为每个设备运行upower -i,从而为我们节省了一个步骤。

3. 使用 /sys/class/power_supply目录

Linux 内核在称为sysfs的只读文件系统中公开有关系统和连接的硬件设备的各种信息。我们可以使用* /sys*目录来访问这个文件系统。

我们可以使用 ls 命令在/sys/class/power_supply*目录下找到电池设备目录:*

$ ls /sys/class/power_supply/
AC  BAT0

BAT0是我们要查找的目录。通常是BAT0或 BAT1,具体取决于我们使用的 Linux 发行版。接下来,我们可以从目录中的文件中获取有关电池的各种信息。我们可以从列出文件开始,看看存在哪些文件:

ls /sys/class/power_supply/BAT0
alarm           charge_full_design  device        power          subsystem   voltage_min_design
capacity        charge_now          hwmon2        present        technology  voltage_now
capacity_level  current_now         manufacturer  serial_number  type
charge_full     cycle_count         model_name    status         uevent

现在,我们可以读取相应文件的内容来获取所需的数据:

$ cat /sys/class/power_supply/BAT0/capacity
100
$ cat /sys/class/power_supply/BAT0/status
Full

在上面的代码片段中,capacity为我们提供了电池中的电量百分比,而status则告诉我们它是在充电还是在放电。