Answers:
以下命令输出有关电池的大量状态和统计信息。/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
)命令显示有关所有可用电源资源的信息,例如笔记本电脑电池,外部鼠标等。
upower --enumerate
如果您不确定如何使用,则可能会有用upower
。
upower -e
,该命令列出了的可用路径upower -i ...
。如果您很懒,只想列出所有设备,请使用upower -d
(upower --dump
)。
upower
我立即迷路了。
upower -i $(upower -e | grep BAT) | grep --color=never -E "state|to\ full|to\ empty|percentage"
友情提醒:因为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
/sys/class/power_supply/BAT0/capacity
似乎显示了当前的充电百分比。
/proc
已经过时了,但/sys
即使是在4.20内核中,它也对我来说很完美。
read
PHP之类功能的编程语言来实现数据检索,$capacity = trim(file_get_contents("/sys/class/power_supply/BAT0/capacity"));
从而使其变得超级简单,并且不受任何外部依赖关系的影响。
首先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
感谢@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/%//
battery
而不是BAT
使其工作。我发现了upower --enumerate
。
battery
适用于Ubuntu,所以我从BAT
也许您可以尝试:
cat /proc/acpi/battery/BAT0/state
cat /proc/acpi/battery/BAT0/info
/proc
从2.6.24开始,不建议使用和存储ACPI信息。现在在/sys/class/power_supply/BAT0
。
我参加聚会有点晚了,但这是我的一点贡献。根据前面的答案,我做了一个简单的脚本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#
)。
您可以执行此操作而无需安装任何其他软件包:
$ 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别名的不错选择。
/sys/class/power_supply/BAT0/
我本来是要建议的,acpi
但是看完它在11.10中不起作用之后,我有了一个主意。
请您的终端类型是:
ls /proc/acpi/battery/BAT0
或BAT1
如果收到“找不到文件或目录”,则此操作将无效。
但是,如果它列出了文件,则这是我刚刚为您编写的脚本[将其粘贴到/ 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)
acpi
它不起作用的原因,因为我想11.10也不支持笔记本电脑的ACPI功能(电池等)。我认为过去升级时遇到了类似情况。我仍然在11.04。抱歉,这对您不起作用:(
ls /proc/acpi/
吗?谢谢
没有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"
这是我用的。它只是查看充满电和当前电量之间的差异,并查看电量是否在下降,在这种情况下,它使用通知来提醒用户。
#!/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
您可以输入:
$ 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
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"