с использованием таймеров systemd вместо cron

Из этого вопроса это может сработать:

iconv -f ISO-8859-1 -t UTF-8 infile.txt > outfile.txt

8
28.06.2016, 20:19
2 ответа

Ответ на этот вопрос - поменять местами 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 для ноутбуков с гибернацией при низком заряде батареи. =)

7
27.01.2020, 20:12

Может быть, вам стоит попробовать добавить первый запуск после загрузки, например:

[Timer] OnBootSec = 15min {{ 1}} OnUnitActiveSec = 2m

2
27.01.2020, 20:12

Теги

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