我创建了一个 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
只有当计时器有机会至少触发一次时才有效,即如果最后的不是不适用。但我的电脑通常在午夜暂停,所以计时器从未触发。