我正在使用 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