Как запустить службу после возобновления работы в спящем режиме в 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% (о чем свидетельствует индикатор зарядки ноутбука, переключающийся с индикатора "Full" на "Зарядка"). Однако, как только Ubuntu загружается, сервис запускается, и лимит снова устанавливается на 80%. Установка поддерживается в s2idle и возобновляется из s2idle, но при возобновлении работы из спящего режима сервис, похоже, не работает, и таким образом предел составляет 100%. После возобновления я могу активировать услугу с помощью

sudo systemctl start batteryy-зарядка аккумулятора-threshold.service

и все заработает снова. Однако я хотел бы, чтобы сервис работал автоматически при возобновлении из спящего режима. Я видел, как это сделать при возобновлении из s2idle или приостановке, но я не смог найти ничего о том, как это сделать в спящем режиме.

Кто-нибудь знает, как к этому подойти?

0
задан 18 April 2021 в 19:00

1 ответ

Отвечая на мое собственное решение здесь:

Фактически подход был таким же, как добавление функций для возобновления из приостановки, я должен сделали ошибки в моих предыдущих попытках.

Вот как я это сделал:

После первого ответа от на этот вопрос я добавил скрипт под названием batt_script в / 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

Команда sudo systemctl start battery-charge-threshold.service в пост-разделе сценария - это то, что запускает службу, и это происходит непосредственно перед появлением экрана входа в систему ( на это указывает переключение светодиодного индикатора состояния заряда с Зарядка на Полная )

Я счастлив, что решил эту проблему, надеюсь, это поможет кому-то другому.

0
ответ дан 23 April 2021 в 23:21

Другие вопросы по тегам:

Похожие вопросы: