Таймер Systemd, срок действия которого истек

Я создал системный таймер пользователя, который истекает ежедневно, то есть в полночь. Проблема в том, что мой компьютер обычно приостанавливается ночью. Когда я просыпаюсь утром, я хочу, чтобы таймер срабатывал, но этого не происходит. Я обнаружил параметр Persistent, но это помогает только при выключении системы, поскольку при запуске служб он запускает истекшие таймеры. Есть ли решение для этого другого, чем, например, запуск почасового таймера и сохранение временной метки в файле где-нибудь?

Edit 2017-03-17: Я использую systemd 231 на ubuntu 16.10. Я хочу запускать напоминание один раз в день, предпочтительно, когда я просыпаюсь с компьютером утром.

2 Solutions collect form web for “Таймер Systemd, срок действия которого истек”

Один из вариантов заключается в том, чтобы установить WakeSystem=true в ваш .timer файл, который заставит компьютер приостановить работу для выполнения задания.

Затем в файле .service который запущен, вы можете добавить:

  ExecStopPost=sudo /bin/systemctl suspend 

Чтобы повторно повторно загрузить компьютер, когда работа выполнена.

Вам также потребуется обновить /etc/sudoers чтобы позволить пользователю выполнить указанную выше команду, не требуя пароля.


Второй вариант – использовать один из монотонных таймеров, описанных в man systemd.timer например OnActiveSec= . Эти таймеры прекращают отсчет времени, когда компьютер приостановлен. Это позволяет вам выражать такие вещи, как «Пожалуйста, резервное копирование моего компьютера один раз каждые 8 ​​часов, когда он включен». Если ваш компьютер обычно работает примерно 8 часов в день, это примерно соответствует одному раз в день. Как вы описали, ваш компьютер часто подкрепляется около полуночи в любом случае – он подкрепляется, когда вы сначала отказываетесь от него утром.


В-третьих, подтвердили ли вы, что Persistent= не работает с suspend когда машина выключена?

Кажется, нет проблем с опцией Persistent и приостановкой. Проблема заключается в том, что Persistent=true работает только в том случае, если таймер имел возможность запускать хотя бы один раз, т.е. если LAST не является n / a . Но мой компьютер обычно приостанавливается в полночь, поэтому таймер никогда не срабатывает.

  • Cron vs systemd таймеры
  • systemd.unit `RequiresMountsFor =` vs `ConditionPathIsDirectory =`
  • Ошибка анализа на блоке таймера systemd. Неверная документация?
  • Периодически выполняемый btrfs-scrub
  • Как настроить Systemd Timer для запуска службы в последний день месяца
  • Поручить выполнить блок после успешного завершения работы другого устройства
  • Linux и Unix - лучшая ОС в мире.