Xubuntu сигнализация батареи
Мне нужно написать сценарий, но я был не в силах. Поэтому я прошу помощи у тех, кто более способен в командной строке.
Мне нужен скрипт, который проверяет процент заряда батареи каждую минуту и подает сигнал, если он падает ниже определенного порога.
Я нахожу свой процент с помощью следующей команды:
upower -i / org / freedesktop / UPower / устройства /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
работа. Так что, если вы хотите его использовать, запустите его из терминала и закройте его, когда закончите.