本文整理自网上文档
Linux将时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称RTC)时钟两种。
系统时间是指当前Linux Kernel中的时钟,使用date命令
而硬件时钟则是主板上由电池供电的那个主板硬件时钟,这个时钟可以在BIOS的Standard BIOS Feture”项中进行设置。用hwclock和clock的命令,clock和hwclock用法相近,只不过clock命令除了支持x86硬件体系外,还支持Alpha硬件体系。由于目前绝大多数用户使用x86硬件体系,所以可以视这两个命令为一个命令来学习。
在系统启动时,Linux操作系统将时间从CMOS中读到系统时间变量中,以后修改时间通过修改系统时间实现。为了保持系统时间与CMOS时间的一致性, Linux每隔一段时间会将系统时间写入CMOS。由于该同步是每隔一段时间(大约是11分钟)进行的,在我们执行date -s后,如果马上重起机器,修改时间就有可能没有被写入CMOS,这就是问题的原因。如果要确保修改生效可以执行如下命令。
第一部分:使用date设置系统时间
#hwclock -w
这个命令强制把系统时间写入CMOS,(等同于hwclock --systohc)
第二部分:使用hwclock或clock命令查看和设置硬件时钟
查看硬件时钟
#hwclock --show
或
#clock –show
2003年09月17日 星期三 13时24分11秒 -0.482735 seconds
设置硬件时钟的操作:
# hwclock --set --date="09/17/2003 13:26:00"
或者
# clock --set --date="09/17/2003 13:26:00"
通用的设置格式:hwclock/clock --set --date=“月/日/年 时:分:秒”。
第三部分:同步系统时钟和硬件时钟
Linux系统(笔者使用的是Red Hat 8.0,其它系统没有做过实验)默认重启后,硬件时钟和系统时钟同步。如果不大方便重新启动的话(服务器通常很少重启),使用clock或hwclock命令来同步系统时钟和硬件时钟。
(1)系统时钟同步至硬件时钟 (把当前的系统时钟写到硬件时钟里)
# hwclock --systohc
或者
# hwclock -w
或者
# clock –systohc
输入#hwclock --help查看所有参数和格式,--systohc表示SYStem clock to Hardware Clock 。
(2)硬件时钟同步至系统时钟 (把硬件时间写到系统时间)
# hwclock --hctosys
或者
# clock –hctosys
上面命令中,--hctosys表示Hardware Clock to SYStem clock。
第四部分:设置时区
第五部分: NTP时种服务器
1、Linux主机做时间服务
(以RedHat9.0为例)
第一步:检查是否已经安装有ntp软件包。输入“rpm -qa|grep ntp”,如果已经安装应该显示“ntp-4.1.2-0.rc1”。
第二步:安装ntp软件,从ftp://ftp.redhat.com下载rpm包,输入“rpm -ivh ntp-xxx.rpm”执行安装。
第三步:配置ntp服务。备份原/etc/ntp.conf文件后,输入以下内容
server 210.72.145.44
server 0.rhel.pool.ntp.org
server 1.rhel.pool.ntp.org
当第一个地址连接失败时,后面的地址提供时间服务。
第四步:启动ntp服务。输入“service ntp restart”。为了保证以后Linux机启动后ntp服务能自动启动,还要输入“chkconfig ntpd on”。
Linux下的ntp软件不但能自动与互联网上的时钟保持同步,同时本身已经是一台SNTP服务器了
2,Linux主机做ntp客户端
向国家授时中心服务器IP地址 210.72.145.44进行同步
如上只要手工执行“ntpdate 时间服务器IP地址”即可。如想每天自动对时,可以把这条命令放在cron中,注意在同一台电脑上ntp服务与ntpdate命令不能同时使用。