我的系统有很多时间漂移,几周后它可以提前约5分钟。
为了解决这个问题,我安装了ntp,它可以帮助修复漂移,当然偶尔会将时间同步到ntp服务器。
假设我有一个类似备份文件的cron作业。以下情况是否可能?
02:00:00 - Cron starts a job
02:00:03 - Ntpd syncs time back 5 seconds to 01:59:58
02:00:00 - 2:00 gets repeated and cron job runs twice
如果cron作业复制大文件,第二次运行可能会尝试覆盖第一个作业未完成写入的文件。
谢谢!
答案 0 :(得分:2)
这里是cron(8)
手册页所说的内容(这适用于Vixie cron;其他实现可能表现不同):
当时钟变化小于3时,存在特殊注意事项 小时,例如在白天节省开始和结束时 时间。如果时间已经向前移动,那些本来会运行的工作 在被删除的时间将在更改后立即运行。 相反,如果时间倒退不到3个小时, 那些落入重复时间的工作将不会重新开始。
仅限在特定时间运行的作业(未指定为@hourly,也未指定 用' *'在小时或分钟说明符)受影响。工作 使用通配符指定的是基于新时间运行的 立即
时钟变化超过3小时被认为是更正 时钟,新时间立即使用。
答案 1 :(得分:1)
在这种特殊情况下,它可能会建议您将一个锁定机制放入备份作业,它只允许它运行一次:
在PERL中,您可以执行以下操作:
flock("/tmp/backup-running", LOCK_EX) || die "I'm already running";
虽然shell可能不会提供类似的机制,除非运行:
touch /tmp/backup-running
if [ -f "/tmp/backup-running" ]
then
exit 0;
fi
....
/bin/rm /tmp/backup-running
容易出现问题,其他语言为您提供与PERL类似的设施。
答案 2 :(得分:0)
ntp.conf允许您控制ntp连接到时间服务器以进行更正的频率。默认情况下,最小值为64秒(minpoll),maxpoll的默认值为1024秒。见man ntp.conf
因此,如果你在不影响事物的时候手动纠正时间,那么启动ntp,漂移量会很小,非常亚秒变化。
我们的m4000有一个这样的时钟,我们从来没有遇到过问题。
注意:锁定文件的唯一问题是,如果备份严重异常终止,则在重置锁定文件之前不会再运行备份。