为了保持 Ubuntu 系统上的时间准确,可以执行以下任一操作:
- 运行
ntpd
(网络时间协议守护程序),它将一直运行并在时钟漂移时不断调整系统时间。或者: - 定期致电
ntpdate
(例如来自cron
)
问题:
- 这两种方法各自的优缺点是什么?
- 哪些不同的场景需要选择其中一种?
答案1
ntpdate 是已弃用截至 2012 年 9 月;显然,ntpd 现在有能力在需要时进行一次性更新,而 ntpdate 则基于“长期被忽视的”ntpd 代码。(对我来说是新闻,因为我的系统有 ntpdate,但没有 ntpd!我马上就会修复这个问题;感谢您提出这个问题。)
至于连续更新和定期更新之间的区别,我认为两者的权衡正如您所期望的那样;连续调整可以随着时间的推移保持更好的准确性,这对于数据库和 MailDir 来说非常重要(参见同一链接)。但当然,这需要稍微多一点的网络流量(对于交换简单的时间戳来说可能可以忽略不计),以及始终在线的网络连接、轻微的 RAM 和 CPU 消耗等。但所有这些缺点在现代计算环境中都是微不足道的;总的来说,我怀疑是否有充分的理由用 cron 代替 ntpd。
答案2
据我了解Linux 系统管理员指南 NTP 章节“持续更新”并不意味着 ntpd 不断查询其服务器(例如每秒一次),而是时间校正不会引入不连续性。
不仅仅是设置正确的时间,ntpd
还会让您的计算机时钟运行得稍微慢一些或快一些,直到达到正确的时间(假设误差不是太大)。这可以避免由于时间间隔或负持续时间而导致软件运行混乱的问题——大多数程序员不会期望进程在开始之前完成,从而给出负持续时间……
此外,手册指出 ntpd 还可以学习并补偿计算机时钟的漂移(至少是恒定部分)。
网络时间协议项目有一个很好的常见问题解答(http://www.ntp.org/ntpfaq/
),解释了 NTP 和它如何计时。