通过终端检查电池状态
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_BAT0或battery_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则告诉我们它是在充电还是在放电。