云网牛站
所在位置:首页 > Linux编程 > Linux上电池电量高于95%或低于20%时发送警报的Shell脚本

Linux上电池电量高于95%或低于20%时发送警报的Shell脚本

2021-01-13 09:40:44作者:黎权良稿源:云网牛站

本文介绍在Linux系统上获取电池状态通知的Shell脚本,即可在电池电量已满(高于95%)或不足(低于20%)时获取电池状态通知。

 

前言

在Linux系统下长时间给电池充电会损坏电池,因此,在100%充电后请拔下电源线。当前没有默认的应用程序来通知电池何时充电或放电,并且您需要安装第三方应用程序来通知您。

为此,我通常安装Battery Monitor应用程序,但已弃用该应用程序,参考使用Aptik Battery Monitor监控Ubuntu笔记本电池用量。当前我创建了一个Shell脚本来获取通知,以下将分享出来。

现在,可以使用以下两个命令来确定笔记本电脑电池的充电和放电状态。

1、使用acpi命令:

$ acpi -b

Battery 0: Discharging, 71%, 00:58:39 remaining

2、使用upower命令:

$ upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep -w 'state|percentage' | awk '{print $2}'

discharging

64%

 

Shell脚本一:在电池电量高于95%或低于20%时发送警报

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

直到电池电量超过20%或少于95%时,警报才会响起:

$ sudo vi /opt/scripts/battery-status.sh

#!/bin/bash

while true

do

 battery_level=`acpi -b | grep -P -o '[0-9]+(?=%)'`

  if [ $battery_level -ge 95 ]; then

   notify-send "Battery Full" "Level: ${battery_level}%"

   paplay /usr/share/sounds/freedesktop/stereo/suspend-error.oga

  elif [ $battery_level -le 20 ]; then

   notify-send --urgency=CRITICAL "Battery Low" "Level: ${battery_level}%"

   paplay /usr/share/sounds/freedesktop/stereo/suspend-error.oga

 fi

 sleep 60

done

脚本准备好后,设置可执行权限:

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

参考:在Linux系统中运行.sh文件的两种方法

最后,将脚本添加到用户配置文件的底部,对于系统范围,您需要在/etc/profile文件中添加脚本:

$ vi /home/magi/.profile

/opt/scripts/battery-status.sh &

重新引导您的Linux系统以进行检查:

$ sudo reboot

 

Shell脚本二:在电池电量已充满(95%以上)或已放电(20%以下)时发送通知

该脚本与上面的脚本相似,但是由AC适配器负责。

如果您插入了交流适配器,并且电池的电量超过了95%,它将发出带有声音的通知,直到您拔下交流适配器后,通知才会停止:

Linux上电池电量高于95%或低于20%时发送警报的Shell脚本

如果拔下交流适配器,则电池电量降至20%之前,您将再也看不到该通知:

Linux上电池电量高于95%或低于20%时发送警报的Shell脚本

脚本如下:

$ sudo vi /opt/scripts/battery-status-1.sh

#!/bin/bash

 while true

  do

    export DISPLAY=:0.0

    battery_level=`acpi -b | grep -P -o '[0-9]+(?=%)'`

    if on_ac_power; then

     if [ $battery_level -ge 95 ]; then

      notify-send "Battery Full" "Level: ${battery_level}% "

      paplay /usr/share/sounds/freedesktop/stereo/suspend-error.oga

     fi

    else

     if [ $battery_level -le 20 ]; then

       notify-send --urgency=CRITICAL "Battery Low" "Level: ${battery_level}%"

       paplay /usr/share/sounds/freedesktop/stereo/suspend-error.oga

     fi

   fi

  sleep 60

done

脚本准备好后,设置执行权限:

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

最后,将该脚本添加到用户配置文件的底部,对于系统范围,您需要在/etc/profile文件中添加脚本:

$ vi /home/magi/.profile

/opt/scripts/battery-status-1.sh &

重新启动系统以进行检查:

$ sudo reboot

 

相关主题

在Linux系统中使用TLP来重新标尺ThinkPad笔记本电池

精选文章
热门文章