使用NTP同步时间

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

 

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

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

 

时钟分为:

  • 软件时钟:由Linux操作系统从1970/01/01开始计算的总描述
  • 硬件时钟:BIOS(CMOS)上记录的时间

 

时区:

  • GMT
  • UTC

 

Linux下校时方法:

  • 手动:date + hwclock
  • 网络(自动):ntpdate

 

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

 

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

 

ntp

 

ntpd的配置文件讲得非常详细了,在看配置文件时,看到一个非常棒的命令,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一下同步时间

 

最后给几个相关资料:

发布者

Tanky Woo

Tanky Woo,[个人主页:https://tankywoo.com] / [新博客:https://blog.tankywoo.com]

发表评论

电子邮件地址不会被公开。 必填项已用*标注