如何在 Ubuntu 20.04 从休眠状态恢复后启动服务?

如何在 Ubuntu 20.04 从休眠状态恢复后启动服务?

运行 Ubuntu 20.04。

为了节省电池寿命,我有一个在启动时运行的服务,它将充电水平限制在 80%,请参阅下面的服务(/etc/systemd/system/battery-charge-threshold.service):

[Unit]
Description=Set the battery charge threshold
After=multi-user.target
StartLimitBurst=0

[Service]
Type=oneshot
Restart=on-failure
ExecStart=/bin/bash -c 'echo 80 > /sys/class/power_supply/BAT0/charge_control_end_threshold'

[Install]
WantedBy=multi-user.target

这很有效,甚至在关闭计算机后也能维持。在计算机 BIOS/UEFI 的初始启动过程中,设置似乎被重置为 100%(笔记本电脑上的充电 LED 指示灯从“已满”变为“正在充电”灯)。但是,一旦启动 Ubuntu,服务就会运行,限制再次设置为 80%。设置在 s2idle 中维持并从 s2idle 恢复,但从休眠状态恢复时,服务似乎没有运行,因此限制为 100%。恢复后,我可以使用

sudo systemctl start battery-charge-threshold.service

一切又恢复正常了。但是,我希望服务在从休眠状态恢复时自动运行。我已经看到了如何在从 s2idle 或挂起状态恢复时实现这一点,但我找不到任何关于如何在休眠状态下实现这一点的信息。

有人知道如何解决这个问题吗?

答案1

在这里回答我自己的解决方案:

该方法实际上与添加从暂停状态恢复的函数相同,我之前的尝试肯定犯了错误。

我是这样做的:

继第一个回答之后这个问题batt_script.sh,我添加了一个名为的脚本/lib/systemd/system-sleep

#!/bin/sh

PATH=/sbin:/usr/sbin:/bin:/usr/bin

case "$1" in
    pre)
            #code execution BEFORE sleeping/hibernating/suspending
    ;;
    post)
            #code execution AFTER resuming
             sudo systemctl start battery-charge-threshold.service
    ;;
esac

exit 0

然后选择允许从 nautilus 执行文件作为程序admin://来获取 root 权限或

sudo chmod +x /lib/systemd/system-sleep/batt-script.sh

sudo systemctl start battery-charge-threshold.service脚本后段中的命令是运行该服务的命令,它发生在登录屏幕出现之前(通过充电状态 LED 指示灯从收费满的

我很高兴我解决了这个问题,希望这可以帮助别人。

相关内容