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

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