将电池控制在一定容量(例如 20%),然后笔记本电脑将自动待机或休眠,以延长电池寿命

将电池控制在一定容量(例如 20%),然后笔记本电脑将自动待机或休眠,以延长电池寿命

我想控制将电池设置为特定容量(例如 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>

改变脚本文件使用您的脚本名称。

现在它应该可以工作了。系统重启后检查一下。

我希望这能帮到您。

相关内容