Linux時鐘在概念上類似Windows時鐘顯示當前系統時間,但在時鐘分類和設置上卻和Windows大相徑庭。和Windows不同的是,Linux將時鐘分為系統時鐘(System Clock)和硬件(Real Time Clock,簡稱RTC)時鐘兩種。系統時間是指當前Linux Kernel中的時鐘,而硬件時鐘則是主板上由電池供電的那個主板硬件時鐘,這個時鐘可以在BIOS的“Standard BIOS Feture”項中進行設置。

? ? 既然Linux有兩個時鐘系統,那么大家所使用的Linux默認使用哪種時鐘系統呢?會不回出現兩種系統時鐘沖突的情況呢?這些疑問和擔心不無道理。首先,Linux并沒有默認哪個時鐘系統。當Linux啟動時,硬件時鐘會去讀取系統時鐘的設置,然后系統時鐘就會獨立于硬件運作。

? ? 從Linux啟動過程來看,系統時鐘和硬件時鐘不會發生沖突,但Linux中的所有命令(包括函數)都是采用的系統時鐘設置。不僅如此,系統時鐘和硬件時鐘還可以采用異步方式,見圖1所示,即系統時間和硬件時間可以不同。這樣做的好處對于普通用戶意義不大,但對于Linux網絡管理員卻有很大的用處。例如,要將一個很大的網絡中(跨越若干時區)的服務器同步,假如位于美國紐約的Linux服務器和北京的Linux服務器,其中一臺服務器無須改變硬件時鐘而只需臨時設置一個系統時間,如要將北京服務器上的時間設置為紐約時間,兩臺服務器完成文件的同步后,再與原來的時鐘同步一下即可。這樣系統和硬件時鐘就提供了更為靈活的操作。

同步系統時鐘和硬件時鐘

? ? Linux系統(筆者使用的是Red Hat 8.0,其它系統沒有做過實驗)默認重啟后,硬件時鐘和系統時鐘同步。如果不大方便重新啟動的話(服務器通常很少重啟),使用clock或hwclock命令來同步系統時鐘和硬件時鐘。

? ? 硬件時鐘與系統時鐘同步:
? ? # hwclock --hctosys

? ? 或者
? ? # clock --hctosys

? ? 上面命令中,--hctosys表示Hardware Clock to SYStem clock。

? ? 系統時鐘和硬件時鐘同步:
? ? # hwclock --systohc

? ? 或者
? ? # clock --systohc
所以你用DATE修改或設置時間后要用clock -w或者hwclock --systohc刷新到CMOS中,以確保時間的準確性