今天在解压一个附件时,发现报了一个错误,具体忘了写啥,大致的意思就是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:
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一下同步时间
最后给几个相关资料: