快速回答:是的。它滑倒了。 (注意:这是在 Ubuntu 16.04 中,可能会在更高版本的 systemd 中修复...)
测试
按照@MarkStosberg在his answer中的建议,我创建了一个没有Accuracy变量的计时器,以便使用默认的1分钟,然后添加变量以1秒测试,看看我的时间是否会滑倒。
我为测试设置的 3 个文件
snaptest.timer
首先我创建了一个名为snaptest.timer 的文件,没有AccuracySec 参数:
[Unit]
Description=Test the slipping timer...
[Timer]
OnUnitActiveSec=5min
[Install]
WantedBy=timers.target
对于第二个测试,我添加了AccuracySec 参数并将其设置为1(表示1秒):
[Unit]
Description=Test the slipping timer...
[Timer]
OnUnitActiveSec=5min
AccuracySec=1 <-- added this for 2nd test
[Install]
WantedBy=timers.target
snaptest.service
其次我创建了一个名为snaptest.service的文件:
[Unit]
Description=Test slipage by logging messages
[Service]
Type=simple
ExecStart=/usr/bin/snaptest
[Install]
WantedBy=multi-user.target
/usr/bin/snaptest
第三,我创建了一个名为/usr/bin/snaptest的脚本:
#!/bin/sh
echo `date` >>/var/log/snapwebsites/snaptest.log
一个非常简单的脚本确实给了我一个名为 snaptest.log 的文件。
启动定时器
对于那些不知道的人,要启动计时器,你只需要像这样启动:
systemctl start snaptest.timer
在这种情况下,您必须指定“.timer”。
此外,这还不够,因为snaptest.service 从未运行过,并且除非服务至少运行一次,否则计时器不会启动。所以第一次运行需要踢:
systemctl start snaptest
测试结果
第一组以默认的 1 分钟精度呈现结果:
Mon Aug 29 14:34:07 PDT 2016
Mon Aug 29 14:39:09 PDT 2016
Mon Aug 29 14:44:37 PDT 2016
Mon Aug 29 14:50:09 PDT 2016
Mon Aug 29 14:56:09 PDT 2016
Mon Aug 29 15:02:09 PDT 2016
Mon Aug 29 15:08:09 PDT 2016
Mon Aug 29 15:14:09 PDT 2016
Mon Aug 29 15:20:09 PDT 2016
Mon Aug 29 15:26:09 PDT 2016
Mon Aug 29 15:32:09 PDT 2016
Mon Aug 29 15:38:09 PDT 2016
Mon Aug 29 15:44:09 PDT 2016
Mon Aug 29 15:50:09 PDT 2016
Mon Aug 29 15:56:09 PDT 2016
Mon Aug 29 16:02:09 PDT 2016
Mon Aug 29 16:08:09 PDT 2016
Mon Aug 29 16:14:09 PDT 2016
Mon Aug 29 16:20:09 PDT 2016
Mon Aug 29 16:26:09 PDT 2016
Mon Aug 29 16:32:09 PDT 2016
Mon Aug 29 16:38:09 PDT 2016
Mon Aug 29 16:44:09 PDT 2016
Mon Aug 29 16:50:09 PDT 2016
Mon Aug 29 16:56:09 PDT 2016
Mon Aug 29 17:02:09 PDT 2016
Mon Aug 29 17:08:09 PDT 2016
Mon Aug 29 17:14:09 PDT 2016
第二组结果显示精度为1秒的结果:
Mon Aug 29 17:19:57 PDT 2016
Mon Aug 29 17:24:57 PDT 2016
Mon Aug 29 17:29:58 PDT 2016
Mon Aug 29 17:34:59 PDT 2016
Mon Aug 29 17:40:00 PDT 2016
Mon Aug 29 17:45:01 PDT 2016
Mon Aug 29 17:50:02 PDT 2016
Mon Aug 29 17:55:03 PDT 2016
Mon Aug 29 18:00:04 PDT 2016
Mon Aug 29 18:05:05 PDT 2016
Mon Aug 29 18:10:06 PDT 2016
Mon Aug 29 18:15:07 PDT 2016
Mon Aug 29 18:20:08 PDT 2016
Mon Aug 29 18:25:09 PDT 2016
Mon Aug 29 18:30:10 PDT 2016
Mon Aug 29 18:35:11 PDT 2016
Mon Aug 29 18:40:12 PDT 2016
Mon Aug 29 18:45:13 PDT 2016
Mon Aug 29 18:50:14 PDT 2016
Mon Aug 29 18:55:15 PDT 2016
Mon Aug 29 19:00:16 PDT 2016
Mon Aug 29 19:05:17 PDT 2016
Mon Aug 29 19:10:18 PDT 2016
Mon Aug 29 19:15:19 PDT 2016
Mon Aug 29 19:20:20 PDT 2016
Mon Aug 29 19:25:21 PDT 2016
Mon Aug 29 19:30:22 PDT 2016
Mon Aug 29 19:35:23 PDT 2016
Mon Aug 29 19:40:24 PDT 2016
Mon Aug 29 19:45:25 PDT 2016
Mon Aug 29 19:50:26 PDT 2016
Mon Aug 29 19:55:27 PDT 2016
Mon Aug 29 20:00:28 PDT 2016
Mon Aug 29 20:05:29 PDT 2016
Mon Aug 29 20:10:30 PDT 2016
Mon Aug 29 20:15:31 PDT 2016
我对这些结果的看法
很明显,它会滑倒... 时间窗口在 0 和 AccuracySec 之间变化。
我想如果我想避免滑点,我必须改用OnCalendar 选项。