Из этого вопроса это может сработать:
iconv -f ISO-8859-1 -t UTF-8 infile.txt > outfile.txt
Ответ на этот вопрос - поменять местами User = nobody
не на User = ziga
, а на Пользователь = root
в /etc/systemd/system/battery.service . Каким-то образом, даже если пользователь ziga
имеет все привилегии использования команды sudo
, он не может выполнить systemctl hibernate
внутри сценария bash. Я действительно не знаю, почему это происходит. Итак, рабочие файлы выглядят следующим образом:
/etc/systemd/system/battery.service
[Unit]
Description=Preko skripte preveri stanje baterije in hibernira v kolikor je stanje prenizko
[Service]
Type=oneshot
ExecStart=/home/ziga/Dropbox/workspace/operacijski/archlinux/hibernate/hibernatescript
User=root
Group=systemd-journal
/etc/systemd/system/battery.timer
[Unit]
Description=Periodical checking of battery status every two minutes
[Timer]
OnBootSec=2min
OnUnitActiveSec=2min
[Install]
WantedBy=battery.service
/ home / ziga / Dropbox / workspace / operacijski / archlinux / hibernate / hibernatescript
#!/bin/sh
/usr/bin/acpi -b | /usr/bin/awk -F'[,:%]' '{print $2, $3}' | (
read -r status capacity
if [ "$status" = Discharging ] && [ "$capacity" -lt 7 ]; then
/usr/bin/systemctl hibernate
fi
)
Я попробовал, и все это также работает с User = ziga
или User = nobody
, но нам нужно изменить / usr / bin / systemctl hibernate
в sudo / usr / bin / systemctl hibernate
в последнем скрипте. Получается, что переменная пользователя
почему-то даже не имеет значения ...Да, и вы также можете удалить абсолютные имена из последнего скрипта и изменить первую строку с #! / Bin / sh
на #! / Bin / bash
. Я также изменил WantedBy = timers.target
на WantedBy = battery.service
в /etc/systemd/system/battery.timer .
Вот так. Лучшая альтернатива cron для ноутбуков с гибернацией при низком заряде батареи. =)
Может быть, вам стоит попробовать добавить первый запуск после загрузки, например:
[Timer]
OnBootSec = 15min {{ 1}} OnUnitActiveSec = 2m