建了一个虚拟机,发现每次重启后系统时钟总是跟现有时间相差10多个小时
用date -s进行修正之后,再次重启又出现该问题。于是怀疑跟硬件时钟有关
用hwclock看了下,发现的确硬件时钟的时间存在差异。调整硬件时钟:
hwclock --set --date
[root@localhost ~]# date -s '2009-05-01 6:06:01'
Fri May  1 06:06:01 CST 2009
[root@localhost ~]# date
Fri May  1 06:06:02 CST 2009
[root@localhost ~]# sync
[root@localhost ~]# hwclock
Thu 30 Apr 2009 10:30:13 PM CST  -0.697852 seconds
[root@localhost ~]# man hwclock
[root@localhost ~]# hwclock --set --date='05/01/2009 06:10:01'
[root@localhost ~]# hwclock
Fri 01 May 2009 06:10:09 AM CST  -0.464026 seconds
原来linux时间分为系统时钟和硬件时钟。
硬件时钟是bois中的时间,系统时间是kernel中的时间。
系统时钟在每次启动的时候读取硬件时钟,然后就独立运作。因此只修改了系
统时钟而不修改硬件时钟的话在系统重启后时间还会不正确。
 
功能说明:显示与设定硬件时钟。

语  法:hwclock [--adjust][--debug][--directisa][--hctosys][--show][--systohc][--test]
[--utc][--version][--set --date=]

补充说明:在Linux中有硬件时钟与系统时钟等两种时钟。硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟。系统时钟则是指kernel中的时钟。当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作。所有Linux相关指令与函数都是读取系统时钟的设定。

参  数:
  --adjust  hwclock每次更改硬件时钟时,都会记录在/etc/adjtime文件中。使用--adjust参数,可使hwclock根据先前的记录来估算硬件时钟的偏差,并用来校正目前的硬件时钟。 
  --debug  显示hwclock执行时详细的信息。 
  --directisa  hwclock预设从/dev/rtc设备来存取硬件时钟。若无法存取时,可用此参数直接以I/O指令来存取硬件时钟。 
  --hctosys  将系统时钟调整为与目前的硬件时钟一致。 
  --set --date=  设定硬件时钟。 
  --show  显示硬件时钟的时间与日期。 
  --systohc  将硬件时钟调整为与目前的系统时钟一致。 
  --test  仅测试程序,而不会实际更改硬件时钟。 
  --utc  若要使用格林威治时间,请加入此参数,hwclock会执行转换的工作。 
  --version  显示版本信息。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12932950/viewspace-592420/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12932950/viewspace-592420/

05-11 17:29