Linux 系統時間和硬體時間

Dus發表於2015-09-07

一、首先要弄清幾個概念:
1. “系統時間”與“硬體時間”
系統時間: 一般說來就是我們執行 date 命令看到的時間,linux系統下所有的時間呼叫(除了直接訪問硬體時間的命令)都是使用的這個時間。

硬體時間: 主機板上BIOS中的時間,由主機板電池供電來維持執行,系統開機時要讀取這個時間,並根據它來設定系統時間(注意:系統啟動時根據硬體時間設定系統時間的過程可能存在時區換算,這要視具體的系統及相關設定而定)。

二、檢視系統時間和硬體時間

1. 系統時間 date
直接呼叫 date,得到的是本地時間。如果想得到UTC時間的話,使用 date -u。

2. 硬體時間 /sbin/hwclock
直接呼叫 /sbin/hwclock 顯示的時間就是 BIOS 中的時間嗎?未必!這要看 /etc/sysconfig/clock 中是否啟用了UTC,如果啟用了UTC(UTC=true),顯示的其實是經過時區換算的時間而不是BIOS中真正的時間,如果加上 --localtime 選項,則得到的總是 BIOS 中實際的時間.

三、系統啟動和關閉時,硬體時間與系統時間之間的同步有兩種方式(假設在中國,用CST代表本地時間):

方式A: 使用UTC(對linux就是 /etc/sysconfig/clock 中 UTC=true)

開機: BIOS------->UTC(將BIOS中的時間看成是UTC)------(時區變化)----->CST
關機: CST -------(時區變化)----->UTC-------儲存到------>BIOS

方式B: 不使用UTC(對linux就是 /etc/sysconfig/clock 中 UTC=false)

開機: BIOS--------------------->CST(將BIOS中的時間看成是CST)
關機: CST ---------儲存到------>BIOS

四、系統時間和硬體時間的同步

同步系統時間和硬體時間,可以使用hwclock命令。

//以系統時間為基準,修改硬體時間

[root@localhost ~]# hwclock --systohc <== sys(系統時間)to(寫到)hc(Hard Clock)

[root@localhost ~]# hwclock -w

//以硬體時間為基準,修改系統時間

[root@localhost ~]# hwclock --hctosys

[root@localhost ~]# hwclock -s

------------------------------------------------------------------------------------

採用crontab和ntp結合進行時間同步

*/30 * * * * /usr/sbin/ntpdate puppetmaster.com.cn(時間伺服器的主機名) >>/root/ntdate.log 2>&1 && /sbin/clock --systohc

相關文章