Real Time Clock(RTC) and System Clock

说道设置时间这里还要明确另外一个概念就是在一台计算机上我们有两个时钟:一个称之为硬件时间时钟(RTC),还有一个称之为系统时钟(System Clock)

硬件时钟是指嵌在主板上的特殊的电路, 它的存在就是平时我们关机之后还可以计算时间的原因

系统时钟就是操作系统的kernel所用来计算时间的时钟. 它从1970年1月1日00:00:00 UTC时间到目前为止秒数总和的值 在Linux下系统时间在开机的时候会和硬件时间同步(synchronization),之后也就各自独立运行了

那么既然两个时钟独自运行,那么时间久了必然就会产生误差了,下面我们来看一个例子[code]# date
Fri Jul 6 00:27:13 BST 2007

hwclock --show

Fri 06 Jul 2007 12:27:17 AM BST -0.968931 seconds [/code]通过hwclock --show 命令我们可以查看机器上的硬件时间(always in local time zone), 我们可以看到它和系统时间还是有一定的误差的, 那么我们就需要把他们同步

如果我们想要把硬件时间设置成系统时间我们可以运行以下命令# hwclock --hctosys 反之,我们也可以把系统时间设置成硬件时间# hwclock --systohc 那么如果想设置硬件时间我们可以开机的时候在BIOS里设定.也可以用hwclock命令# hwclock --set --date="mm/dd/yy hh:mm:ss" 如果想要修改系统时间那么用date命令就最简单了# date -s "dd/mm/yyyy hh:mm:ss" 现在我们知道了如何设置系统和硬件的时间. 但问题是如果这两个时间都不准确了怎么办?

那么我们就需要在互联网上找到一个可以提供我们准确时间的服务器然后通过一种协议来同步我们的系统时间,那么这个协议就是NTP了.

注意接下去我们所要说的同步就都是指系统时间和网络服务器之间的同步了.