本页描述了使您计算机的时间保持准确的方法。这对于服务器来说很有用,但对于桌面计算机来说则不是必需的(或可取的)。
NTP 是通过网络来同步时间的一种 TCP/IP 协议。通常客户端向服务器请求当前的时间,并根据结果来设置其时钟。
在这个简单描述的背后,隐藏着许多复杂的事情 - 有数层的 NTP 服务器,第一层是连接到原子钟(通常是通过 GPS)的 NTP 服务器,第二层和第三层服务器分散负载并实际处理来自互联网的请求。客户端软件也要比您可能想到的更加复杂 - 其必需推导出通讯的延迟,并以不会干扰您服务器上其它进程工作的方式来调整时间。但幸运的是所有这些复杂性都对您隐藏起来了!
Ubuntu 有两种方式可以自动设置您的时间:ntpdate 和 ntpd。
Ubuntu 以 ntpdate 作为标准配置,并会在引导时运行其一次,来根据 Ubuntu 的 NTP 服务器设置您的时间。然而,服务器的时钟很可能在两次重启之间产生误差,因此时刻调整时间也是合理的。完成这项工作的最简单的方式是让 cron 每天运行 ntpdate。使用您喜爱的编辑器,以 root 的身份,创建一个包含如下内容的 /etc/cron.daily/ntpdate
文件:
ntpdate ntp.ubuntu.com
/etc/cron.daily/ntpdate
文件还必须是可执行的。
sudo chmod 755 /etc/cron.daily/ntpdate
ntpdate 有些迟钝 - 它只能一天调整一次时间,每次都是一个大改动。而 ntp 守护进程 ntpd 就很灵巧。它会计算您系统时钟的偏差并持续不断地调整时间,这样就不至于因为调整过大而引起像日志不一致这样的问题。其代价是消耗一点处理能力和内存,但对于现代服务器来说这点是可以忽略的。
若想设置 ntpd:
sudo apt-get install ntp-simple
在上述的两种情况中,您的系统会默认使用位于 ntp.ubuntu.com
的 Ubuntu NTP 服务器。这没有问题,但您可以会想使用多个服务器来增加准确性和弹性,并且使用在地理位置上更接近您的时间服务器。若要对 ntpdate 这样做,请将 /etc/cron.daily/ntpdate
的内容修改为:
ntpdate ntp.ubuntu.com pool.ntp.org
对于 ntpd,请编辑 /etc/ntp.conf
以加入额外的服务器:
server ntp.ubuntu.com server pool.ntp.org
您可能注意到了上面例子中的 pool.ntp.org
。通过一个使用转轮法的 DNS 来从服务器池中返回一个 NTP 服务器实在是个好主意,这样可以在不同的服务器之间平摊负载。更好的是,对于不同的区域有不同的服务器池 - 例如,假如您在新西兰的话,您就可以使用 nz.pool.ntp.org
取代 pool.ntp.org
。参见 http://www.pool.ntp.org/ 以获得更多信息。
您也可以使用 Google 搜索您所在区域中的 NTP 服务器,再将其加入您的配置中。若想测试该服务器是否工作,只需键入 sudo ntpdate ntp.server.name
然后看结果。