Выполняется 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 или приостановке, но я не смог найти ничего о том, как это сделать в спящем режиме.
Кто-нибудь знает, как к этому подойти?
Отвечая на мое собственное решение здесь:
Фактически подход был таким же, как добавление функций для возобновления из приостановки, я должен сделали ошибки в моих предыдущих попытках.
Вот как я это сделал:
После первого ответа от на этот вопрос я добавил скрипт под названием 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
в пост-разделе сценария - это то, что запускает службу, и это происходит непосредственно перед появлением экрана входа в систему ( на это указывает переключение светодиодного индикатора состояния заряда с Зарядка на Полная )
Я счастлив, что решил эту проблему, надеюсь, это поможет кому-то другому.