![Xubuntu 电池警报](https://linux22.com/image/1088912/Xubuntu%20%E7%94%B5%E6%B1%A0%E8%AD%A6%E6%8A%A5.png)
我需要写一个脚本,但超出了我的能力范围。所以我向那些在命令行方面更有能力的人寻求帮助。
我需要一个脚本,每分钟检查一次电池电量百分比,如果低于某个阈值则发出信号。
我使用以下命令找到我的百分比:
upower -i /org/freedesktop/UPower/devices/battery_BAT1| grep -E “百分比”
我希望当它低于 25% 时发出信号。
我只会使用这个脚本来“放电”会话,理想的情况是使用一条长的命令行,这样会更方便,因为关闭终端也会中断电池检查。
问题:
- 使用 crontab 并关闭终端是否也会关闭打开的 cron 进程?使用循环是否更好
do while
?
提前感谢大家!
答案1
我确信以下脚本不是最佳的,甚至可能存在我自己看不到的错误。我在编程方面非常业余,我只是把它当作一种爱好。 我很乐意接受批评或建议!:)
脚本使用acpi
#!/bin/bash
# A script to make an alarm go off at desired battery thresholds
### Variables
BAT=$(acpi | grep -o [[:digit:]][[:digit:]] | head -1)
LOW_LVL=35
CHARG=$(acpi | grep -o "Charging")
CHARGING=0
### Functions
charging()
{
### Checks wether the computer is charging (1) or not (0)
if [ "$CHARG 1" = "Charging 1" ]; then
CHARGING=1
else CHARGING=0
fi
echo $CHARGING
}
alarm_connect()
{
notify-send -i /usr/share/icons/gnome/48x48/status/battery-low.png "Battery under 35%" "Charge it"
paplay /usr/share/sounds/freedesktop/stereo/complete.oga
}
### Main
while true
do
if [ $(charging) = 0 ]; then
if [ $BAT -le $LOW_LVL ]; then
$(alarm_connect)
fi
sleep 1m
done
脚本使用upower
#!/bin/bash
# A script to make an alarm go off at desired battery thresholds
### Variables
BAT=$(upower -i $(upower -e | grep 'BAT') | grep -E "state|to\ full|percentage" | grep -o [[:digit:]][[:digit:]])
LOW_LVL=25
CHARG=$(upower -i $(upower -e | grep 'BAT') | grep -E "state|to\ full|percentage" | grep -o "\ charging")
CHARGING=0
### Functions
charging()
{
### Checks wether the computer is charging (1) or not (0)
if [ "$CHARG" = " charging" ]; then
CHARGING=1
else CHARGING=0
fi
echo $CHARGING
}
alarm_connect()
{
paplay /usr/share/sounds/freedesktop/stereo/complete.oga
}
### Main
while true
do
if [ $(charging) = 0 ]; then
if [ $BAT -le $LOW_LVL ]; then
$(alarm_connect)
fi
fi
sleep 60
done
您可以根据需要替换:
LOW_LVL
用于修改您希望闹钟响起的电池电量百分比的变量。- 随 一起出现的声音和图标
notify-send
,只需检查它们的路径,您就可以在那里找到多种多样的选项。 - 时间
sleep
。例如:sleep 60
=sleep 1m
。
使用 crontab 并关闭终端也会关闭打开的 cron 进程吗?
不,关闭终端不会停止cron
作业。因此,如果您想这样使用它,请从终端运行它,并在完成后关闭它。