Как отключить систему, если не заряжается

Я использую Ubuntu 14.04 LTS. Моя батарея не работает, т.е. она обеспечивает резервное копирование в течение примерно 5 минут. Теперь, когда я загружаю материал, иногда это занимает около 5-6 часов. И я не могу просто так долго бездельничать с ноутбуком. Поэтому я хочу сделать код, который будет проверять, заряжается ли батарея каждые 5 минут, а если нет, то выключит систему.

1
задан 3 May 2016 в 15:04

2 ответа

Рев сценария использует два вызова для dbus и один цикл с условием продолжения для опроса относительно процента. Очень простая и эффективная установка. Выполните это, когда Вы хотите завершить работу ноутбука, после того как он заряжен

#!/bin/bash
get_percentage()
{
  qdbus org.gnome.SettingsDaemon.Power \
       /org/gnome/SettingsDaemon/Power \
        org.gnome.SettingsDaemon.Power.Percentage
}

shutdown_system()
{
  qdbus com.canonical.Unity  \
       /com/canonical/Unity/Session \
        com.canonical.Unity.Session.Shutdown

}

# Basically loop that waits till
# battery reaches 100%. When 100%
# reached , loop exits, and next command
# is executed, which is shutdown
while [ $(get_percentage) -ne 100   ] ;
do
  sleep 0.25
done

# Add delay or a warning message here if necessary
shutdown_system
0
ответ дан 4 May 2016 в 01:04
  • 1
    Никакая потребность определить начало строки и выйти из пробела в кавычках †“и никакая потребность инвертировать и распечатать его: sed 's/.*number \([0-9]\+\)/\1/' <<< "$string" – dessert 11 October 2017 в 09:37

Попробуйте этот сценарий Python. Это одалживает от Сохраняющая автоматически работа, когда батарея низка

#!/usr/bin/env python

import subprocess
import dbus

sys_bus = dbus.SystemBus()

ck_srv = sys_bus.get_object('org.freedesktop.ConsoleKit',
                            '/org/freedesktop/ConsoleKit/Manager')
ck_iface = dbus.Interface(ck_srv, 'org.freedesktop.ConsoleKit.Manager')

stop_method = ck_iface.get_dbus_method("Stop")

battery_limit = 90  # in percent

def get_battery_percentage():

    percentage, err = subprocess.Popen([r'upower -i $(upower -e | grep BAT) | grep --color=never -E percentage | xargs | cut -d ' ' -f2 | sed s/%//
'], shell=True, stdout=subprocess.PIPE).communicate()

    return(int(percentage))

while True:

    if get_battery_percentage() <= battery_limit:

        stop_method()
0
ответ дан 4 May 2016 в 01:04
  • 1
    Я сделал то же, и предотвратить эту вещь к раздражению меня. Я просто удалил и поместил в черный список 4.10.0-37-универсальное ядро. – leoheck 14 October 2017 в 01:58

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

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