📄 0440ntp.htm
字号:
<tr><td><font color="#000066" face="SimSun">MST , Mountain</font></td><td><font color="#000066" face="SimSun">105 W</font></td><td><font color="#000066" face="SimSun">-7  西七区</font></td></tr><tr><td><font color="#000066" face="SimSun">CST , Central</font></td><td><font color="#000066" face="SimSun">90  W</font></td><td><font color="#000066" face="SimSun">-6  西六区</font></td></tr><tr><td><font color="#000066" face="SimSun">EST , Eastern</font></td><td><font color="#000066" face="SimSun">75  W</font></td><td><font color="#000066" face="SimSun">-5  西五区</font></td></tr><tr><td><font color="#000066" face="SimSun">AST , Atlantic</font></td><td><font color="#000066" face="SimSun">60  W</font></td><td><font color="#000066" face="SimSun">-4  西四区</font></td></tr><tr><td><font color="#000066" face="SimSun">Brazil, Zone 2</font></td><td><font color="#000066" face="SimSun">45  W</font></td><td><font color="#000066" face="SimSun">-3  西三区</font></td></tr><tr><td><font color="#000066" face="SimSun">AT  , Azores</font></td><td><font color="#000066" face="SimSun">30  W</font></td><td><font color="#000066" face="SimSun">-2  西二区</font></td></tr><tr><td><font color="#000066" face="SimSun">WAT , West Africa</font></td><td><font color="#000066" face="SimSun">15  W</font></td><td><font color="#000066" face="SimSun">-1  西一区</font></td></tr></tbody></table> <br>所以啰!台湾时间是 GMT + 8 就很容易推算出来了吧!要特别留意的是,很多朋友在安装Linux 的时候,总是会发现目前的时间慢或者快了 8 小时,不要怀疑,绝对与时区有关!赶紧给他查一下如何调整时区吧!^_^。另外,在上表中有个比较有趣的时区,那就是在太平洋上面的国际日期变更线了!我们刚刚说,在格林威治的东边时间会较快,而在西边时间会较慢,但是两边各走了180 度之后,就会碰头啊!那不就刚好差了 24 小时吗?!没错啦!所以才订定为『<b><font color="#000066">国际日期变更线</font></b>』啊!国际日期变更线刚好在太平洋上面,因此,如果您有坐飞机到美国的经验,应该会发现,咦!怎么出发的时间是星期六下午,坐了13 个小时的飞机到了美国还是星期六?!因为刚好通过了国际日期变更线,日期减少了一天喔!如果反过来,由美国到台湾,日期就会多加一天喔!^_^<br> <br><hr width="100%"><a name="theory_summer"></a><font color="#000099">什么是夏季节约时间(daylightsavings)?</font><br> <br>除了时区的概念先建立起来之后,现在再来谈一谈,那么什么是『<font color="#000066">夏季节约时间</font>』?既然是『夏季节约时间』当然主要是与夏天有关啦!因为地球在运行的时候是呈现一个倾斜角在绕太阳运转的,所以才有春夏秋冬(这个大家应该都知道啦!),在夏天的时候,白天的时间会比较长,所以,为了节约用电,因此在夏天的时候,某些地区会将他们的时间定早一小时,也就是说,原本时区是8 点好了,但是因为夏天太阳比较早出现,因此把时间向前挪,在 8 点的时候,订定为该天的7 点~如此一来,我们就可以利用阳光照明,省去了花费电力的时间,因此才会称之为夏季节约时间!<br> <br>因为台湾实在是太小了,并没有横跨两个时区,因此,夏季节约时间对我们来说,虽然还是有帮助啦!不过,似乎没有特别推行的样子说~<br> <br><hr width="100%"><a name="theory_UTC"></a><font color="#000099">CoordinatedUniversal Time (UTC) 与系统时间的误差</font><br> <br>了解了一些时区的概念之后,这里要谈的是『<font color="#000066">什么是正确的时间</font>!』。在计算时间的时候,最准确的计算应该是使用『<font color="#000066">原子震荡周期</font>』所计算的物理时钟了(Atomic Clock, 也被称为原子钟 ),这也被定义为标准时间(International AtomicTime)。而我们常常看见的 UTC 也就是 <font color="#000066">Coordinated UniversalTime</font> (协和标准时间)就是利用这种 Atomic Clock 为基准所定义出来的<font color="#000066">正确时间</font>。例如1999 年在美国启用的原子钟 NIST F-1,他所产生的时间误差每两千年才差一秒钟!真的是很准吶!这个UTC 标准时间是以 GMT 这个时区为主的喔!所以本地时间与 UTC 时间的时差就是本地时间与GMT 时间的时差就是了!<br> <br>事实上,在我们的身边就有很多的原子钟!例如石英表,还有计算机主机上面的BIOS 内部就含有一个原子钟在纪录与计算时间的进行吶!不过,由于原子钟主要是利用计算芯片(crystal) 的原子震荡周期去计时的,这是因为每种芯片都有自己的独特的震荡周期之故。然而因为这种芯片的震荡周期在不同的芯片之间多多少少都会有点差异性,甚至同一批芯片也可能会或多或少有些许的差异(就连温度也可能造成这样的误差呢!),因此,也就造成了BIOS 的时间会三不五时的给他快了几秒或者慢了几秒。<br> <br>或许您会认为,BIOS 定时器每天快个五秒也没有什么了不起的,不过如果您再仔细的算一算,会发现,一天快五秒,那么一个月快2.5分钟,一年就快了75 分钟了!所以说,呵呵!时间差是真的会存在的!那么如果您的计算机真的有这样的情况,那要怎么来重新校正时间呢?!呵呵!那就需要『<font color="#000066">网络校时</font>』(<font color="#000066">NetworkTime Protocol, NTP</font> )的功能了!底下我们就谈一谈那个 NTP 的 daemon吧!<br> <br><hr width="100%"><a name="theory_NTP"></a><font color="#000099">NTP 是什么?</font><br> <br>如同前面说的,计算机主机主要是以 BIOS 内部的时间为主要的时间依据,而偏偏这个时间可能因为BIOS 内部芯片本身的问题,而导致 BIOS 时间与标准时间 (UTC) 有一点点的差异存在!所以,为了避免主机时间因为长期运作下所导致的时间偏差,进行时间同步( synchronize ) 的工作就显的很重要了!<br> <br>那么怎么让时间同步化呢?想一想,如果我们选择几部主要主机 ( Primaryserver ) 调校时间,让这些 Primary Servers 的时间同步之后,再开放网络服务来让Client 端联机,并且提供 Client 端调整 Client 自己的时间,不就可以达到全部的计算机时间同步化的运作了吗?!那么什么协议可以达到这样的功能呢?!那就是<font color="#000066">NetworkTime Protocol</font> ,另外还有 Digital Time Synchronization Protocol (DTSS)也可以达到相同的功能!<br> <br>不过,到底 NTP 这个 daemon 是如何让 Server 与 Client 同步他们的时间呢?!<br> <ol><li><font color="#000066">首先,主机当然需要启动这个 daemon ,之后,</font></li><li><font color="#000066">Client 会向 NTP Server 发送出调校时间的 message ,</font></li><li><font color="#000066">然后 NTP Server 会送出目前的标准时间给 Client ,</font></li><li><font color="#000066">Client 接收了来自 Server 的时间后,会据以调整自己的时间,就达成了网络校时咯!</font></li></ol><font color="#000066"> </font><br>不过,在上面的步骤中您有没有想到一件事啊,那就是如果 Client 到 Server的讯息传送时间过长怎么办?!举例来说,我在台湾以 ADSL 的 PC 主机,联机到美国的NTP Server 主机进行时间同步化要求,而美国 NTP Server 收到我的要求之后,就发送当时的正确时间给我,不过,由美国将数据传送回我的PC 时,时间可能已经延迟了 10 秒钟去了!这样一来,我的 PC 校正的时间是 10秒钟前的标准时间喔!此外,如果美国那么 NTP 主机有太多的人喜欢上去进行网络校时了,所以loading (负荷) 太重啦!导致讯息的回传又延迟的更为严重!那怎么办?!<br> <br>为了这些延迟的问题,有一些 program 已经开发了自动计算时间传送过程的误差,以更准确的校准自己的时间!当然啦,在daemon 的部分,也同时以 server/client 及 master/slave 的架构来提供使用者进行网络校时的动作!所谓的master/slave 就有点类似 DNS 的系统咯!举例来说,台湾的标准时间主机去国际标准时间的主机校时,然后各大专院校再到台湾的标准时间校时,然后我们再到各大专院校的标准时间校时!这样一来,那几部国际标准时间主机( Time server ) 的 loading 就不至于太大,而我们也可以很快速的达到正确的网络校时的目的呢!台湾常见的Time Server 为:<br> <ul><font color="#000066">time.stdtime.gov.tw</font><br><font color="#000066">clock.stdtime.gov.tw</font><br><font color="#000066">freq_f.stdtime.gov.tw</font><br><font color="#000066">tick.stdtime.gov.tw</font><br><font color="#000066">time.chttl.com.tw</font></ul> <br>至于 <font color="#000066">ntp 这个 daemon 是以 port 123 </font>为连结的埠口(使用 UDP 封包),所以我们要利用 Time server 来进行时间的同步更新时,就得要使用NTP 套件提供的 ntpdate 来进行 port 123 的联机喔!关于网络校时更多的说明,可以到NTP 的官方网站上察看喔!<br> <ul><a href="http://www.ntp.org/" target="_blank">http://www.ntp.org</a></ul></ul><hr width="100%"><a name="package"></a><font size="+1" color="#000099">套件安装:</font><ul><hr width="100%"><a name="package_rpm"></a><font color="#000099">使用 RPM安装</font><br> <br>一般来说, NTP Server 在各个 distribution 的功能差异应该不很大啦!所以比较建议使用RPM 的方式来进行安装!您可以拿出 Linux 的原版光盘,mount 上之后,搜寻以ntp 为开头的套件档名,然后给他安装上去,就可以了!不过,需要特别留意的是,<font color="#000066">当您安装好了NTP 之后,系统会自动的将 ntp 启动喔</font>!所以,<font color="#000066">如果您只是想利用NTP 套件里面的 Client 功能,那么最好还是将 ntp 这个 daemon 关闭吧</font>!<br> <table bgcolor="#000000" border="1" cols="1" width="550"><tbody><tr><td><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]#</font><font color="#ffff00"> chkconfig --level 2345 ntpd off</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]# </font><font color="#ffff00">/etc/rc.d/init.d/ntpd stop</font></font></td></tr></tbody></table> <br>如此一来,您的 ntp 套件已经安装完毕,可以使用 ntp 的 client 功能去联机Time server 进行网络校时了!至于 NTP Server 则需要继续的进行设定呢!<br> <br><hr width="100%"><a name="package_tarball"></a><font color="#000099">使用Tarball 安装</font><br> <br>使用 Tarball 来安装 NTP 其实也是不困难的!简单的很!请先到 NTP 的官方网站下载最新的NTP 套件:<a href="http://www.ntp.org/downloads.html" target="_blank">http://www.ntp.org/downloads.html</a>,这里我以ntp-4.1.2.tar.gz 这个版本为范例,假设您下载的套件放置在 /root 底下,那么可以这样做:<br> <table bgcolor="#000000" border="1" cols="1" width="550"><tbody><tr><td><font size="-1" color="#ffffcc" face="SimSun">0. 解压缩,并阅读一下ntp 底下的 README 与 INSTALL:</font><br><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]#</font><font color="#ffff00"> cd /usr/local/src</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">[root@testsrc]# </font><font color="#ffff00">tar -zxvf /root/ntp-4.1.2.tar.gz</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">[root@testsrc]# </font><font color="#ffff00">cd ntp-4.1.2</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">[root@testntp-4.1.2]#</font><font color="#ffff00"> vi INSTALL (vi README)</font></font><br><font size="-1" color="#ffffff" face="SimSun"> </font><br><font size="-1" color="#ffffcc" face="SimSun">1. 开始设定参数、编译与安装:</font><br><font size="-1" face="SimSun"><font color="#ffffff">[root@testntp-4.1.2]# </font><font color="#ffff00">./configure --help | more </font><font color="#ff6666">#可以察看一下可用的参数!</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">[root@testntp-4.1.2]# </font><font color="#ffff00">./configure --prefix=/usr/local/ntp \</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">></font><font color="#ffff00"> --enable-all-clocks --enable-parse-clocks</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">[root@testntp-4.1.2]# </font><font color="#ffff00">make clean ; make</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">[root@testntp-4.1.2]# </font><font color="#ffff00">make check </font><font color="#ff6666">#确定一下,是否有问题!?</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">[root@testntp-4.1.2]#</font><font color="#ffff00"> make install</font><font color="#ff6666"># 将数据给他安装在 /usr/local/ntp 底下</font></font></td></tr></tbody></table> <br>设定完成之后,您就有 ntp 可以使用了!不过,无论怎么说,使用 RPM 来安装NTP 还是比较简单一些啦! ^_^</ul><hr width="100%"><a name="server"></a><font size="+1" color="#000099">Server端的设定</font><ul>好了,假设您已经使用 RPM 来安装了 NTP 这个套件,那么我们就可以来谈一谈怎么设定NTP 主机啦!<br> <br><hr width="100%"><a name="server_packages"></a><font color="#000099">NTP的套件结构</font><br> <br>NTP 套件的结果主要分为两部份,一个是 NTP Server 的部分,一个则是 NTPClient 的部分,在这个章节里面,我们不谈比较困难的设定,主要介绍较为简易的设定而已喔!所以,您需要注意到的档案与指令有底下这几个:<br> <ul><li><font color="#000099" face="SimSun">与 NTP 及时区有关的几个设定档:</font></li><br><b><font color="#000066" face="SimSun"> </font></b><ul><li><b><font color="#000066" face="SimSun">/etc/ntp.conf</font></b>:这个是 NTP daemon 的主要设定档,依据不同的版本放置的目录可能会不同,不过档名都是一样的!使用locate ntp.conf 搜寻一下您的系统有没有这个档案吧!这也是 NTP 唯一的一个设定档案!</li><br> <li><font face="SimSun"><b><font color="#000066">/usr/share/zoneinfo</font></b><font color="#000000">:这是个目录,这个目录是Linux 本身提供的,而不是 NTP 所提供的。在这个目录下的档案其实是规定了各主要时区的时间设定档案,例如台湾地区的时区设定档案在</font><font color="#000066">/usr/share/zoneinfo/Asia/Taipei</font><font color="#000000">就是了!这个目录里面的档案与底下要谈的两个档案( clock 与 localtime )是有关系的喔!</font></font></li><br><font color="#000000" face="SimSun"> </font><li><b><font color="#000066" face="SimSun">/etc/sysconfig/clock</font></b>:这个档案其实也不包含在NTP 的 daemon 当中,因为这个是 linux 的主要时区设定档案啊!每次开机后,Linux会自动的读取这个档案来设定自己系统所预设要显示的时间说!举个例子来说,在我们台湾地区的本地时间设定中,这个档案内应该会出现一行『<font color="#000066" face="SimSun">ZONE="Asia/Taipei"</font>』的字样,这表示我们的时间设定档案『要取用 <font color="#000066" face="SimSun">/usr/share/zoneinfoe/Asia/Taipei</font>那个档案』的意思!</li><br> <li><font face="SimSun"><b><font color="#000066">/etc/localtime</font></b><font color="#000000">:这个档案就是『</font><font color="#000066">本地端的时间设定档</font><font color="#000000">』啦!刚刚那个clock 档案里面规定了使用的时间设定档 (ZONE) 为 /usr/share/zoneinfo/Asia/Taipei,所以说,这就是本地端的时间了,此时, Linux 系统就会将 Taipei 那个档案复制一份成为/etc/localtime ,所以未来我们的时间显示就会以 Taipei 那个时间设定档案为准。好了,如果现在我这部主机搬到日本东京去了,那么我应该如何调整时间呢?其实什么调整都不需要,因为我们的localtime 主要是分析与 UTC 时间的时差来显示的格式,所以,您只要将 /etc/sysconfig/clock里面的 ZONE 设定成为 Asia/Tokyo 并且将 /usr/share/zoneinfo/Asia/Tokyo 复制成为/etc/localtime ,呵呵!什么设定都不需要更动,就能显示时间为日本东京的时间了!这样是否能够了解?</font></font></li>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -