Я должен записать сценарий, но был вне моей способности. Таким образом, я спрашиваю справку к, которые более в состоянии в командной строке.
Мне нужен сценарий, который проверяет процент батареи каждую минуту и звучит как сигнал, если это падает ниже определенного порога.
Я нахожу свой процент со следующей командой:
upower-i/org/freedesktop/UPower/devices/battery_BAT1 | grep-E "процент"
Я хотел бы, чтобы это игралось сигнал, когда это падает ниже 25%.
Я использовал бы этот сценарий только для "разряжения" сессий, и идеал будет долгой командной строкой, которая была бы более удобной, потому что закрытие терминала также прервет проверку аккумуляторных батарей.
Вопрос:
do while
цикл?Благодаря всем заранее!
я уверен, что следующий сценарий не оптимален, и он мог бы даже иметь ошибки, которые я не вижу сам. Я очень-любитель при программировании, и я только делаю это как хобби. я буду рад принять критические замечания или предложения! :)
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
задание. Таким образом, если это - то, как Вы хотите использовать его, выполнить его от терминала и закрыть его, когда Вы сделаны с ним.