Tanky WooRSS

使用NTP同步时间

22 Apr 2013
这篇博客是从旧博客 WordPress 迁移过来,内容可能存在转换异常。

今天在解压一个附件时,发现报了一个错误,具体忘了写啥,大致的意思就是tar包显示的时间戳是未来的时间,于是date看了下系统实现,显示是19号,而其实今天已经21号了。

以前其实写过一篇设置gentoo时间的文章《关于虚拟机linux(gentoo)中时间不对的问题》,不过这次失效了。

对比了下时间,感觉偏的太多了,好像是19个小时,找了半天原因还是没有解决。没办法,于是只能靠NTP了。

时钟分为:

时区:

Linux下校时方法:

ntpd daemon是提供ntp服务器的,ntp整体类似于一个层级的结构,下级使用上级来同步网络时间。ntp配置文件是 /etc/ntp.conf ,可以设置管理权限、上层ntp服务器等

ntp服务器是层次结构的,下图来自Wikipedia

ntp

ntpd的配置文件讲得非常详细了,在看配置文件时,看到一个非常棒的命令,[netselect](http://apenwarr.ca/netselect/), 官方介绍

> > an ultrafast intelligent parallelizing binary-search implementation of "ping." > >

一般可以用它来筛选最快的mirror

这里,我们也可以用它来筛选最快的NTP服务器,当做自己的上级stratum

比如:

tankywoo@gentoo-jl $ netselect -s 3 -vv pool.ntp.org
Running netselect to choose 3 out of 3 addresses.
............
202.112.29.82                         9999 ms  30 hops    0% ok
202.112.31.197                        9999 ms  30 hops    0% ok
218.75.4.130                            41 ms  17 hops  100% ok (10/10) [  110]
  110 218.75.4.130

国内一般使用 cn.pool.ntp.org 就可以了

一般情况下不需要时刻更新时间,所以也就不需要弄ntp服务器,只需要本地 ntpdate 操作获取网络时间即可,如

tankywoo@gentoo-jl $ sudo ntpdate -v cn.pool.ntp.org
22 Apr 21:00:25 ntpdate[35555]: ntpdate 4.2.6p5@1.2349-o Sat Apr 20 04:10:35 UTC 2013 (1)
22 Apr 21:00:31 ntpdate[35555]: adjust time server 202.112.29.82 offset 0.048118 sec

在我实际使用中,还有一个非常爽的好处,每次我电脑待机后再开机,Gentoo( in VMware)的时间总是不对,停留在待机的时间,而一些应用,比如Git,都是使用本地时间当作commit的timestamp,这样导致我提交的时间不准确,这时就可以ntpdate一下同步时间

最后给几个相关资料: