Как заставить сценарий удара выполниться, когда батарея на моем ноутбуке начинает заряжаться/разряжать?

У меня есть носатая установка, которая отображает мой уровень заряда батареи. Проблема, каждый раз, когда я включаюсь/отключаю свой ноутбук от зарядного устройства, я должен запустить скрипт носатого запуска, чтобы заставить это отображаться правильно. Я нахожу, что это боль (Даже при том, что мне настраивали средство запуска, которое запускает скрипт при нажатии) и хотел бы знать то, что я должен сделать для создания сценария выполненным каждый раз, когда я включаюсь/отключаю свой ноутбук от зарядного устройства.

2
задан 17 June 2015 в 01:30

3 ответа

Вот довольно простой сценарий, который может быть добавлен как Приложение Запуска и будет работать непрерывно. Вставьте команду, которую Вы хотите выполнить после обнаружения изменения в методе питания, как определено в комментариях.

#!/bin/bash
# Author: Serg Kolo
# Date: June 17,2015
# Description:  this script detects changes in
# the powering method, and does something user
# specifies in appropriate field

on_ac_power
PREVIOUS=$(echo $?)

while [ 1 ]; do
    # check if we're on ac power or not
    on_ac_power
    CURRENT=$(echo $?)
    # check if previous values are current
    # are different. If they are
    # raise the flag.
    if [ $CURRENT -ne $PREVIOUS ]; then
        echo things changed
        # Insert commands you wanna run here 
        # in the space below this comment
        echo running custom stuff

        # when done: make current value previous
        # for future comparison
        PREVIOUS=$(echo $CURRENT )
    else
        # if previous values and current are same
        # it means we didn't switch from battery to
        # ac or vice versa; do nothing
        continue
    fi

    sleep 1
done
1
ответ дан 2 December 2019 в 05:04

Вот универсальный подход:

#!/bin/bash

status="$(grep -Po '^charging\s+state:\s+\K.* 
  • /proc/acpi/battery/BAT0/state содержит состояние батареи, замените BAT0, если название батареи отличается в Вашем случае

  • , строка, запускающаяся с charging state: из файла, содержит состояние, заряжается ли батарея, разряжаясь или заряжалась

  • , Мы сохраняем строку состояния от той строки в переменной status

  • В зависимости от значения status, мы можем сделать то, что мы хотим.

/proc/acpi/battery/BAT0/state)" if [[ $status = 'charging' ]]; then ##Charging, Do something elif [[ $status = 'discharging' ]]; then ##Discharging, Do something elif [[ $status = 'charged' ]]; then ##Charged, Do something else ##Battery not found, Do something fi
  • /proc/acpi/battery/BAT0/state содержит состояние батареи, замените BAT0, если название батареи отличается в Вашем случае

  • , строка, запускающаяся с charging state: из файла, содержит состояние, заряжается ли батарея, разряжаясь или заряжалась

  • , Мы сохраняем строку состояния от той строки в переменной status

  • В зависимости от значения status, мы можем сделать то, что мы хотим.

0
ответ дан 2 December 2019 в 05:04

Когда Вы включаетесь/отключаете силовой кабель, любые сценарии в/etc/pm/power.d выполняются с "истинным" аргументом, когда Вы включаете и "ложный" аргумент, когда Вы отключаете.

Добавление некоторого сценария до конца того файла должно заставить его работать.

, Если у Вас есть много сценария для выполнения, необходимо попытаться добавить строку, которая похожа на это:

if [ -f /path/to/the/script ]; then
    . /path/to/the/script
fi

необходимо будет, вероятно, удостовериться, что сценарий в.../power.d/каталоге является исполняемым файлом:

cd /etc/pm/power.d/
chmod +x ./name_of_file 

Для получения дополнительной информации выезд этот ответ: , Как я могу выполнить сценарий, когда источник питания включается - в или-?

0
ответ дан 2 December 2019 в 05:04

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

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