我想控制将电池设置为特定容量(例如 20%),然后笔记本电脑将自动待机或休眠以延长电池寿命。有什么解决办法吗?请注意:我的 Vostrol 3450,ubuntu 13.04,休眠功能已经恢复。
我可以在文件容量中找到以下电池容量:
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0A:00/power_supply/BAT0/capacity
我创建了 bash 脚本:
#!/bin/bash
load=$(cat /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0A:00/power_supply/BAT0/capacity)
min_load=20
if [ $load <= min_load ]; then
pm-suspend
fi
在终端上,我执行 cli 进行测试:
sudo /bin/battery-suspend
然后结果失败显示:
/bin/battery-suspend: line 5: =: No such file or directory
答案1
电池容量存储在 中的某个位置/proc
。可能/proc/acpi/battery
或类似的东西。您可以编写一个 bash 脚本来读取电池状态并发出休眠或挂起命令。它看起来像这样:
#!/bin/bash
load=$(cat /proc/acpi/battery)
min_load=20
if [ $load <= min_load ]; then
pm-suspend
fi
我无法保证这是正确的,因为我不知道输出是什么样子cat /proc/acpi/battery
,而且我也不是 Bash 脚本专家。尝试一下,如果有任何问题请询问。
然后,您可以创建一个 cronjob,每隔一分钟左右运行一次脚本。查看本教程用于 cronjobs。您需要以 root 用户身份创建您的作业。
答案2
你可以尝试使用这个脚本。
当电池电量达到选定值时,它会发出通知,然后暂停您的电脑。
#! /bin/bash
# read battery percentage value
OUT=`upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep percentage`
# select only the int value
IFS=':' read -ra P <<< "$OUT"
PERCENTAGE="%"
BATTERY_VALUE=${P[1]%$PERCENTAGE}
# send a notification and then suspend pc
# if battery level is under 20%
if (( $BATTERY_VALUE <= "20")); then
notify-send "Battery Low level! Your PC will be suspended!"
# play sound if you want to be alerted
# paplay /usr/share/sounds/freedesktop/stereo/complete.oga
# wait for 3 seconds before suspend pc
sleep 3
# suspend your pc
pm-suspend
fi
将此脚本复制到 bash 文件中并将其移动到本地 bin 文件夹:
sudo mv <script_file> /usr/local/bin/
在哪里脚本文件是脚本的名称(或路径)。然后您可以使用cron
守护进程每 5 分钟运行一次(或选择您的执行频率)来检查电池电量。因此cron
以超级用户身份编辑(脚本需要超级用户权限才能暂停 PC):
sudo crontab -e
选择首选编辑器并在文件末尾添加以下行:
*/5 * * * * /usr/local/bin/<script_file>
改变脚本文件使用您的脚本名称。
现在它应该可以工作了。系统重启后检查一下。
我希望这能帮到您。