Аварийный сигнал батареи Xubuntu

Я должен записать сценарий, но был вне моей способности. Таким образом, я спрашиваю справку к, которые более в состоянии в командной строке.

Мне нужен сценарий, который проверяет процент батареи каждую минуту и звучит как сигнал, если это падает ниже определенного порога.

Я нахожу свой процент со следующей командой:

upower-i/org/freedesktop/UPower/devices/battery_BAT1 | grep-E "процент"

Я хотел бы, чтобы это игралось сигнал, когда это падает ниже 25%.

Я использовал бы этот сценарий только для "разряжения" сессий, и идеал будет долгой командной строкой, которая была бы более удобной, потому что закрытие терминала также прервет проверку аккумуляторных батарей.

Вопрос:

  • Будет использование crontab, и закрытие терминала также закрывает процесс крона, который открыт? Лучше использовать a do while цикл?

Благодаря всем заранее!

1
задан 6 January 2017 в 12:40

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 задание. Таким образом, если это - то, как Вы хотите использовать его, выполнить его от терминала и закрыть его, когда Вы сделаны с ним.

1
ответ дан 7 December 2019 в 15:42

Другие вопросы по тегам:

Похожие вопросы: