如何在不充电的情况下关闭系统

如何在不充电的情况下关闭系统

我正在使用 Ubuntu 14.04 LTS。我的电池无法使用,也就是说,它只能提供大约 5 分钟的备用电量。现在,当我下载东西时,有时需要大约 5 - 6 个小时。而且我不能长时间待在笔记本电脑旁。所以我希望编写一个代码,每 5 分钟检查一次电池是否正在充电,如果没有,它将关闭系统。

答案1

尝试这个 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()

答案2

下面的脚本使用两次调用dbus和一个 while 循环来轮询百分比。非常简单有效的设置。当您想在笔记本电脑充电后关闭它时运行此脚本

#!/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

相关内容