如何在电池充满或低电量时获得电池状态通知

系统 Linux
对于类 Unix 用户来说,Linux 笔记本是不错的选择,但它经常会耗尽电池。我试过很多 Linux 操作系统,但没有像 Windows 那样电池寿命长。

[[377390]]

对于类 Unix 用户来说,Linux 笔记本是不错的选择,但它经常会耗尽电池。我试过很多 Linux 操作系统,但没有像 Windows 那样电池寿命长。

充电时间长了会对电池造成损害,所以在电池 100% 充满时要拔掉电源线。电池充电或放电时没有默认的应用程序来通知,需要安装第三方应用来通知你。

为此,我通常会安装 Battery Monitor,但它已经被废弃,所以我创建了一个 shell 脚本来获取通知。

笔记本电池充放电状态可以通过以下两个命令来识别。

使用 acpi 命令。

  1. $ acpi -b
  2. Battery 0: Discharging, 71%, 00:58:39 remaining

使用 upower 命令。

  1. $ upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep -w 'state|percentage' | awk '{print $2}'
  2. discharging
  3. 64%

方法 1:当电池电量高于 95% 或低于 20% 时,用 Shell 脚本发送警报

这个脚本在启动时在后台运行,每分钟检查一次电池状态,然后在电池电量超过 95% 或放电时电量低于 20% 时发送通知。

警报会直到你的电池电量超过 20% 或低于 95% 时才会停止。

  1. $ sudo vi /opt/scripts/battery-status.sh
  1. #!/bin/bash
  2. while true
  3. do
  4. battery_level=`acpi -b | grep -P -o '[0-9]+(?=%)'`
  5. if [ $battery_level -ge 95 ]; then
  6. notify-send "Battery Full" "Level: ${battery_level}%"
  7. paplay /usr/share/sounds/freedesktop/stereo/suspend-error.oga
  8. elif [ $battery_level -le 20 ]; then
  9. notify-send --urgency=CRITICAL "Battery Low" "Level: ${battery_level}%"
  10. paplay /usr/share/sounds/freedesktop/stereo/suspend-error.oga
  11. fi
  12. sleep 60
  13. done

脚本完成后,设置可执行权限:

  1. $ sudo chmod +x /opt/scripts/battery-status.sh

最后,将该脚本添加到用户配置文件的底部。对于全局范围来说,你需要在 /etc/profile 文件中添加该脚本。

  1. $ vi /home/magi/.profile
  2.  
  3. /opt/scripts/battery-status.sh &

重启你的 Linux 系统来检查这点。

  1. $ sudo reboot

方法 2:当电池充电(高于 95%)或放电(低于 20%)时发送通知的 Shell 脚本

这个脚本与上面的脚本类似,但它是由交流适配器负责。

如果你插上了交流适配器,而且电池的电量超过 95%,它就会发出一个带有声音的通知,但是这个通知不会停止,直到你拔掉交流适配器。 

如果你拔掉交流适配器,你将永远不会再看到通知,直到你的电池电量下降到 20%。 

  1. $ sudo vi /opt/scripts/battery-status-1.sh
  1. #!/bin/bash
  2. while true
  3. do
  4. export DISPLAY=:0.0
  5. battery_level=`acpi -b | grep -P -o '[0-9]+(?=%)'`
  6. if on_ac_power; then
  7. if [ $battery_level -ge 95 ]; then
  8. notify-send "Battery Full" "Level: ${battery_level}% "
  9. paplay /usr/share/sounds/freedesktop/stereo/suspend-error.oga
  10. fi
  11. else
  12. if [ $battery_level -le 20 ]; then
  13. notify-send --urgency=CRITICAL "Battery Low" "Level: ${battery_level}%"
  14. paplay /usr/share/sounds/freedesktop/stereo/suspend-error.oga
  15. fi
  16. fi
  17. sleep 60
  18. done

脚本完成后,设置执行权限:

  1. $ sudo chmod +x /opt/scripts/battery-status-1.sh

最后将脚本添加到用户配置文件的底部。对于全局范围来说,你需要在 /etc/profile 文件中添加该脚本。

  1. $ vi /home/magi/.profile
  2.  
  3. /opt/scripts/battery-status-1.sh &

重启系统来检查:

  1. $ sudo reboot

参考: stackexchange 

 

责任编辑:庞桂玉 来源: Linux中国
相关推荐

2018-05-16 11:45:42

Linux终端电池状态

2021-09-27 15:19:48

手机电池科技

2009-08-17 09:27:12

c# Windows

2020-06-16 18:09:54

Windows 10Windows电池驱动

2015-08-04 10:02:10

隐私HTML5电池

2015-05-11 10:57:01

Android M谷歌

2019-02-22 16:20:50

PowerTOPLinux电池寿命

2019-02-21 10:17:45

Windows 10 剩余时间电池寿命

2012-10-09 14:13:08

惠普笔记本电池保养

2020-06-04 17:00:37

Linux命令脚本

2013-01-25 13:55:26

Surface RT

2017-09-12 09:13:56

机房UPS主机电池

2018-05-03 14:29:42

电池mAhWh

2019-10-11 13:00:40

机器学习AI人工智能

2012-10-17 17:53:37

NEC锂电池寿命

2022-02-23 06:34:01

电池计算机供电

2017-07-19 09:32:03

UPS蓄电池逆变器

2023-03-02 08:32:27

点赞
收藏

51CTO技术栈公众号