我编写了一个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 页面波尔基特。