Я использую Ubuntu 14.04 LTS. Моя батарея не работает, т.е. она обеспечивает резервное копирование в течение примерно 5 минут. Теперь, когда я загружаю материал, иногда это занимает около 5-6 часов. И я не могу просто так долго бездельничать с ноутбуком. Поэтому я хочу сделать код, который будет проверять, заряжается ли батарея каждые 5 минут, а если нет, то выключит систему.
Рев сценария использует два вызова для 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
Попробуйте этот сценарий 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()
sed 's/.*number \([0-9]\+\)/\1/' <<< "$string"
– dessert 11 October 2017 в 09:37