Linux 笔记本电脑电池电量低于 8% 时关机

Linux 笔记本电脑电池电量低于 8% 时关机

我编写了一个crontab条目,以用户身份在我的主目录中运行一个脚本。如果我忘记打开电源,它会通知我。这很好用。

BATTERY=$(upower -e | grep 'BAT')
BATTERY_PERCENTAGE=$(upower -i $BATTERY|grep percentage|awk '{ print $2 }'|sed s/'%'/''/g)
AC_STATUS=$(cat /sys/class/power_supply/AC/online)

echo "Battery: $BATTERY_PERCENTAGE %"


if [ "$BATTERY_PERCENTAGE" -lt "20" ]  && 
[     "$AC_STATUS" -eq "0"             ]; then

   notify-send --urgency=critical "WARNING: Battery is about to die"  "Plug in the power cable"
   mplayer samsung_low_battery_sound.mp4 &> /dev/null 

fi

我的问题是我不想再添加一个 root crontab 条目来检查电池和交流电是否关闭,如果笔记本电脑电量为 5%,则自动关闭笔记本电脑。我宁愿使用现有的脚本。但关机命令需要 root 访问权限。是否可以通过脚本以用户身份自动关机?(桌面允许这样做)

将要

答案1

如果你是不在 systemd 上,以无权限关闭系统的命令root是:

dbus-send --system --print-reply --dest=org.freedesktop.login1 /org/freedesktop/login1 "org.freedesktop.login1.Manager.PowerOff" boolean:true

如果你systemd,则systemd它本身控制对 DBUS 的访问。你可以在 Arch Linux wiki 页面上阅读如何处理这个问题允许用户关机,它提供了几种解决方案。

另外,可以通过更改规则来实现polkit,这有点复杂,请参见 Arch Linux wiki 页面波尔基特

相关内容