15.3 客户端的时间更新方式

上头介绍了 NTP 服务器的安装与设定,如果我们仅有十部不到的主机时,老实说,实在没有架设 NTP 服务器的需求。 只要能够在你的主机上头以 NTP 客户端软件来进行网络校时就能够同步化时间了,没必要时时刻刻进行时间的校正吧!^_^! 但是,如果是类似一定要时间同步的丛集计算机群或登录服务器群,那就得要使用时间服务器比较好啰!


15.3.1 Linux 手动校时工作: date, hwclock

先来复习一下前面谈到的重点,那就是 Linux 操作系统当中其实有两个时间,分别是:

软件时钟: Linux 自己的系统时间,由 1970/01/01 开始记录的时间参数
硬件时钟: 计算机系统在 BIOS 记录的实际时间,这也是硬件所记录的

在软件时钟方面,我们可以透过 date 这个指令来进行手动修订,但如果要修改 BIOS 记录的时间,就得要使用 hwclock 这个指令来写入才行。相关的用法如下:

[root@clientlinux ~]# date MMDDhhmmYYYY
选项与参数:
MM:月份
DD:日期
hh:小时
mm:分钟
YYYY:公元年

# 1\. 修改时间成为 1 小时后的时间该如何是好?
[root@clientlinux ~]# date
Thu Jul 28 15:33:38 CST 2011

[root@clientlinux ~]# date 072816332011
Thu Jul 28 16:33:00 CST 2011
# 瞧!时间立刻就变成一个小时后了!
[root@clientlinux ~]# hwclock [-rw]
选项与参数:
-r :亦即 read ,读出目前 BIOS 内的时间参数;
-w :亦即 write ,将目前的 Linux 系统时间写入 BIOS 当中啊!

# 2\. 查阅 BIOS 时间,并且写入更改过的时间啰!
[root@clientlinux ~]# date; hwclock -r
Thu Jul 28 16:34:00 CST 2011
Thu 28 Jul 2011 03:34:57 PM CST  -0.317679 seconds
# 看一看,是否刚好差异约一个小时啊!这就是 BIOS 时间!

[root@clientlinux ~]# hwclock -w; hwclock -r; date
Thu 28 Jul 2011 04:35:12 PM CST  -0.265656 seconds
Thu Jul 28 16:35:11 CST 2011
# 这样就写入啰~所以软件时钟与硬件时钟就同步啦!很简单吧!

这样可以了解了吗?当我们进行完 Linux 时间的校时后,还需要以 hwclock 来更新 BIOS 的时间,因为每次重新启动的时候,系统会重新由 BIOS 将时间读出来,所以, BIOS 才是重要的时间依据吶。


15.3.2 Linux 的网络校时

在 Linux 的环境当中可利用 NTP 的客户端程序,亦即是 ntpdate 这支程序就能够进行时间的同步化。 不过你要知道的是,因为 NTP 服务器本来就会与上层时间服务器进行时间的同步化, 所以在预设的情况下,NTP 服务器不可以使用 ntpdate !也就是说 ntpdate 与 ntpd 不能同时启用的。 所以你不要在 NTP server 上头执行这个指令呦!我们就来看看如何处理吧!

[root@clientlinux ~]# ntpdate [-dv] [NTP IP/hostname]
选项与参数:
-d :进入除错模式 (debug) ,可以显示出更多的有效信息。
-v :有较多讯息的显示。

[root@clientlinux ~]# ntpdate 192.168.100.254
28 Jul 17:19:33 ntpdate[3432]: step time server 192.168.100.254 offset -2428.396146 sec
# 最后面会显示微调的时间有多少 (offset),因为鸟哥这部主机时间差很多,所以秒数...

[root@clientlinux ~]# date; hwclock -r
四  7月 28 17:20:27 CST 2011
公元2011年07月28日 (周四) 18时19分26秒  -0.752303 seconds
# 知道鸟哥想要表达什么吗?对啊!还得 hwclock -w 写入 BIOS 时间才行啊!

[root@clientlinux ~]# vim /etc/crontab
# 加入这一行去!
10 5 * * * root (/usr/sbin/ntpdate tock.stdtime.gov.tw && /sbin/hwclock -w) > /dev/null

使用 crontab 之后,每天 5:10 Linux 系统就会自动的进行网络校时啰!相当的简易吧!不过,这个方式仅适合不要启动 NTP 的情况。如果你的机器数量太多了,那么客户端最好也启动一下 NTP 服务!透过 NTP 去主动的更新时间吧! 如何达成这个动作呢?也很简单啊,修改 /etc/ntp.conf 即可:

[root@clientlinux ~]# ntpdate 192.168.100.254
# 由于 ntpd 的 server/client 之间的时间误差不允许超过 1000 秒,
# 因此你得先手动进行时间同步,然后再设定与启动时间服务器呦!

[root@clientlinux ~]# vim /etc/ntp.conf
#server 0.centos.pool.ntp.org
#server 1.centos.pool.ntp.org
#server 2.centos.pool.ntp.org
restrict 192.168.100.254  <==放行服务器来源!
server 192.168.100.254    <==这就是服务器!
# 很简单,就是将原本的 server 项目批注,加入我们要的服务器即可

[root@clientlinux ~]# /etc/init.d/ntpd start
[root@clientlinux ~]# chkconfig ntpd on

然后取消掉 crontab 的更新程序,这样你的 client 计算机就会主动的到 NTP 服务器去更新啰!也是轻松愉快啊! 不过针对客户端来说,鸟哥还是比较习惯使用 crontab 的方式来处理就是了。


15.3.3 Windows 的网络校时

或许你一直都没发现,其实 Windows 在预设的情况当中,已经帮我们处理了网络校时的工作喔!不管你愿不愿意… 你可以将鼠标的指针指在任务栏右下角的时间以如下的方式来查阅一下网络时间服务器的设定:


图 15.3-1、Windows 7 提供的网络校时功能

点选上图中的『变更日期与时间设定值』,出现如下图示:


图 15.3-2、Windows 7 提供的网络校时功能

如上所示,你可以自行填写台湾的时间服务器来对应时间,当然也可以填写你自己的时间服务器啊! 之后系统就会主动的上网去更新时间了。不过,这是 Windows XP 之后的窗口系统才有的功能,如果是比较早期的 Windows , 例如 Windows 95/2000 预设是没有这个功能的。不过也没有关系, 因为国家频率与时间标准实验室 (http://www.stdtime.gov.tw/) 也有提供一个客户端软件喔!链接资料如下:

http://www.stdtime.gov.tw/chinese/EXE/NTPClock.exe

你可以下载,直接执行他就知道如何处理了,因为是全中文接口的图形化软件嘛!


15.4 重点回顾

地球共有 24 个时区,而以格林威治时间 (GMT) 为标准时间;
台湾本地时间为 GMT + 8 小时;
最准确的时间为使用原子钟 (Atomic clock) 所计算的,例如 UTC (Coordinated Universal Time) 就是一例;
Linux 系统本来就有两种时间,一种是 Linux 以 1970/01/01 开始计数的系统时间,一种则是 BIOS 记载的硬件时间;
Linux 可以透过网络校时,最常见的网络校时为使用 NTP 服务器,这个服务启动在 udp port 123;
时区档案主要放置于 /usr/share/zoneinfo/ 目录下,而本地时区则参考 /etc/localtime;
NTP 服务器为一种阶层式的服务,所以 NTP 服务器本来就会与上层时间服务器作时间的同步化, 因此 nptd 与 ntpdate 两个指令不可同时使用;
NTP 服务器的联机状态可以使用 ntpstat 及 ntpq -p 来查询;
NTP 提供的客户端软件为 ntpdate 这个指令;
在 Linux 下想要手动处理时间时,需以 date 设定时间后,以 hwclock -w 来写入 BIOS 所记录的时间。
NTP 服务器之间的时间误差不可超过 1000 秒,否则 NTP 服务会自动关闭。

郑重声明:

1 本资源来源于互联网,资源的版权归资源原作者所持有,受《中华人民共和国著作权法》等相关法律保护。

2 由于无法和原作者取得联系,所以上传的部分资源无法先通过原作者的同意就分享给大家了,如本资源侵犯了您(原作者)的权益,请联系我们(微信号 xiaohaimei1989),我们会立马删除您的资源,并向您表达诚挚的歉意!

3 本站是一个公益型网站,分享资源的目的在于传播知识,分享知识,收取一点点打赏的辛苦费是用于网站的日常运营开支,并非用于商业用途。

4 本站资源只提供学习和参考研究使用,使用过后请在第一时间内删除。本站不承担资源被单位或个人商用带来的法律责任。

发表评论