在Linux中有硬件時鐘與系統時鐘兩種時鐘。硬件時鐘是指主機板上的時鐘設備,也就是通常可在BIOS畫面設定的時鐘。系統時鐘則是指kernel中的時鐘。所有Linux相關指令與函數都是讀取系統時鐘的設定。因為存在兩種不同的時鐘,那麼它們之間就會存在差異。當Linux啟動時,系統時鐘會去讀取硬件時鐘的設定,之後系統時鐘即獨立運作。
用date命令對系統時間進行設置後,並不會去修改硬件時鐘,所以系統重啟後,系統時間還算會去讀取硬件時間,這就是為何date設置失效到原因。
因此,需要在設置系統時間後,將系統時間同步到硬件時鐘。
clock/hwclock:
顯示與設定硬件時鐘(query and set the hardware clock (RTC)),兩個命令相同。RTC=Real Time Clock,也就是硬件時鐘。
命令參數:
-r, --show 讀取並打印硬件時鐘(read hardware clock and print result)
-s, --hctosys 將硬件時鐘同步到系統時鐘(set the system time from the hardware clock)
-w, --systohc 將系統時鐘同步到硬件時鐘(set the hardware clock to the current system time)
命令示例:
1. 查看硬件時鐘
2014年03月27日 星期四 11時03分50秒 -0.328520 seconds
[root@localhost ~]# hwclock -r
2014年03月27日 星期四 11時03分53秒 -0.797264 seconds
[root@localhost ~]# hwclock --show
2014年03月27日 星期四 11時04分01秒 -0.672267 seconds
2. clock與hwclock相同
復制代碼
[root@localhost ~]# type -a hwclock
hwclock is /sbin/hwclock
hwclock is /usr/sbin/hwclock
[root@localhost ~]# ll /sbin/hwclock /usr/sbin/hwclock
-rwxr-xr-x. 1 root root 46940 11月 22 23:27 /sbin/hwclock
lrwxrwxrwx. 1 root root 18 3月 26 19:27 /usr/sbin/hwclock -> ../../sbin/hwclock
[root@localhost ~]# type -a clock
clock is /sbin/clock
[root@localhost ~]# ll /sbin/clock
lrwxrwxrwx. 1 root root 7 3月 26 19:27 /sbin/clock -> hwclock
復制代碼
3. 同步系統時間到硬件時鐘
復制代碼
[root@localhost ~]# hwclock
2014年03月27日 星期四 18時50分51秒 -0.312960 seconds
[root@localhost ~]# date
2014年 03月 27日 星期四 10:50:55 CST
[root@localhost ~]# hwclock -w
[root@localhost ~]# hwclock
2014年03月27日 星期四 10時51分15秒 -0.875387 seconds
復制代碼
同步網絡時間到系統時間
[root@localhost ~]# ntpdate 210.72.145.44
27 Mar 11:11:24 ntpdate[4766]: adjust time server 210.72.145.44 offset 0.011401 sec
210.72.145.44 (中國西安授時中心的官方時間同步服務器IP域名)
同步網絡時間到系統時間後,就可以用hwclock -w將系統時間同步到硬件時間。
修改時區
可能部分系統在執行以上兩步後,在重啟後仍然失效,所以需要進行時區修改。
[root@localhost ~]# tzselect #按照提示進行選擇時區
[root@localhost ~]# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
修改系統時間配置文件
[root@localhost ~]# /etc/sysconfig/clock
#打開clock文件,將相關內容改成以下內容
UTC=true
ARC=false
ZONE="Asia/Shanghai"
重啟系統
[root@localhost ~]# reboot