Systemd 计时器在挂起时过期

Systemd 计时器在挂起时过期

我创建了一个 systemd 用户计时器,每天(即午夜)到期。问题是我的电脑通常在晚上暂停。当我早上醒来时,我希望触发计时器,但这并没有发生。我发现了“持久”选项,但这仅在系统关闭时有帮助,因为它在启动服务时会触发过期的计时器。除了运行每小时计时器并将时间戳保存到某个文件中之外,还有其他解决方案吗?

编辑2017-03-17:我在ubuntu 16.10上使用systemd 231。我想要的是跑步提醒每天一次,最好是早上唤醒电脑时。

答案1

WakeSystem=true您可以选择的一种选择是在文件中进行设置.timer,这会将计算机从挂起状态唤醒以运行作业。

然后在.service运行的文件中,您可以添加:

 ExecStopPost=sudo /bin/systemctl suspend

作业运行完毕后重新挂起计算机。

您还需要更新/etc/sudoers以允许您的用户无需密码即可运行上述命令。


man systemd.timer第二种选择是使用类似中描述的单调计时器之一OnActiveSec=。当计算机挂起时,这些计时器停止计时。这些允许您表达诸如“请每 8 小时备份我的计算机一次”之类的内容。如果您的计算机通常每天运行大约 8 小时,这大约相当于每天一次。正如您所描述的,无论如何,您的计算机经常在午夜左右进行备份 - 当您早上第一次取消挂起计算机时,它就会进行备份。


第三,您是否确认机器关闭后也Persistent=无法正常工作?suspend

答案2

看来选项和挂起没有问题Persistent。问题似乎是Persistent=true只有当计时器有机会至少触发一次时才有效,即如果最后的不是不适用。但我的电脑通常在午夜暂停,所以计时器从未触发。

相关内容