程式扎記: [Linux 文章收集] 系統時間日期變更的指令

標籤

2010年10月16日 星期六

[Linux 文章收集] 系統時間日期變更的指令

轉載自 這裡 
前言 : 
在 Linux 作業系統當中其實有兩個時間,分別是 : 
* 一個是 BIOS 記錄的實際時間,這也是硬體所記錄的;
* 一個是 Linux 自己的系統時間,由 1970/01/01 開始記錄的時間參數

當 Linux 開機後,他會主動的讀出 BIOS 所記錄的時間,然後開始用自己的方式來計算時間了。 當我們使用 date 之類的指令來查詢或者是設定時間時,該時間指的僅是 Linux 的時間而已, 並沒有更動到 BIOS 內所記錄的時間吶!除非你使用 hwclock 來寫入或者是讀出 BIOS 的時間. 而由於 BIOS 會記錄時間而且會持續計時,因此我們關機後再開機時,會發現時間其實是有順利的累積上來的。 為了要維持 BIOS 所記錄的資訊,因此主機板上面的電池就很重要了, 因為他可以讓 BIOS 在關機的時候還繼續的記錄硬體資訊以及維持時間的累計。 所以如果你發現開機後整個 BIOS 時間竟然恢復成為系統出廠值,很可能就是主機板上面的電池沒電了。 如果你將 BIOS 斷電處理時,嘿嘿!時間可能也會恢復成為系統出廠值啊!! 

由於 BIOS 內部的時間計算器可能有點誤差,因此與我們的 Linux 時間多多少少就會產生差異, 這個差異在時間拉長之後,就會發現他的重要性了。所以才會需要進行網路校時. 

Linux 系統時區與手動校時工作: date, hwclock : 
我們在前面說過, Linux 的時區檔案就是 /etc/localtime ,這是一個時間格式的檔案而不是 ASCII 類型的檔案喔! (file /etc/localtime 可以看出),至於所有的 Time Zone 則放置在 /usr/share/zoneinfo 這個目錄下。請注意 : 
* 當 /etc/localtime 存在時,系統的時區以該檔案代表的時區來顯示、
* 當 /etc/localtime 不存在時,系統的時區主要以 GMT (或 UTC) 為準

所以,如果您想要變更您 Linux 系統的時區,那麼只要在 /usr/share/zoneinfo 裡面找到您需要的時區檔案, 然後將他複製一份成為 /etc/localtime 就可以順利的更新時區設定了!另外,同時建議修正一下 /etc/sysconfig/clock 這個檔案裡面的 ZONE 設定值!以我們台灣的 Time zone 為例,在 /etc/sysconfig/clock 這個檔案當中應該是『ZONE="Asia/Taipei"』這就表示我們的時區檔案為 /usr/share/zoneinfo/Asia/Taipei 這個檔案囉!請對應著修改成您所想要的時區吧. 

時區修正完畢,那麼時間呢?如前所述,目前 Linux 系統上面有兩個時間喔,一個是 Linux 系統,另一個則是 BIOS 時間!我們可以使用 date 這個指令來手動修正目前主機的時間,不過, date 這個指令僅修正 Linux 時間而已,我們還需要以 hwclock 這個指令來將 BIOS 時間也更新才行. 而變更時間語法如下 : 
[root@linux ~]# date MMDDhhmmYYYY
參數 :
MM:月份
DD:日期
hh:小時
mm:分鐘
YYYY:西元年


[root@linux ~]# hwclock [-rw]
參數 :
-r :亦即 read ,讀出目前 BIOS 內的時間參數;
-w :亦即 write ,將目前的 Linux 系統時間寫入 BIOS 當中啊!

- 範例 : 修改時間成為 1 小時後的時間 
linux-tl0r:~/automation # date
Thu Sep 9 11:24:07 CST 2010 <目前時間>
linux-tl0r:~/automation # date 090912242010 <修改時間為一個小時後>
Thu Sep 9 12:24:00 CST 2010 <時間立刻就修改過來了>
linux-tl0r:~/automation # hwclock -r <查閱 BIOS 時間,並且寫入更改過的時間囉>
Thu Sep 9 11:27:50 2010 -0.775889 seconds <看一看,是否剛好差異約一個小時啊!這就是 BIOS 時間>
linux-tl0r:~/automation # hwclock -w <這樣就寫入囉~很簡單吧>

當我們進行完 Linux 時間的校時後,還需要以 hwclock 來更新 BIOS 的時間,因為每次開機的時候,系統會重新由 BIOS 將時間讀出來,所以, BIOS 才是重要的時間依據. 

補充說明 : 
[Linux 命令] date : 顯示與修改日期時間 
[Linux 命令] hwclock : 顯示與設定硬體時間 
nixCraft - How To Change Timezone on a CentOS 6 and 7 
[Linux 小學堂] 如何線上對 Server 時間進行校時 (ntpdate)

沒有留言:

張貼留言

網誌存檔

關於我自己

我的相片
Where there is a will, there is a way!