很多網友在安裝完 centos 系統後發現時間與現在時間相差 8 小時,這是由于在安裝系統的時選擇的時區是上海,而 centos 預設 bios 時間是 utc 時間,是以時間相差了 8 小時。這個時候的 bios 的時間和系統的時間是不一緻的,一個代表 utc 時間,一個代表 cst 時間(+8時區),即上海時間。
【同步時間的解決方法】
首先,修改時區配置
<a href="http://my.oschina.net/moooofly/blog/295847#">?</a>
1
2
3
4
<code># vi /etc/sysconfig/clock</code>
<code>zone=</code><code>"asia/shanghai"</code>
<code>utc=</code><code>false</code> <code># 設定為 false ,硬體時鐘不和 utc 時間一緻</code>
<code>arc=</code><code>false</code>
其次,同步系統時間,并寫入 bios
<code># ln -sf /usr/share/zoneinfo/asia/shanghai /etc/localtime # linux 的時區設定為上海</code>
<code># ntpdate pool.ntp.org # 通過公網 ntp 伺服器校準時間</code>
<code># /sbin/hwclock --systohc # 設定硬體時間和系統時間一緻并校準</code>
至此,linux 系統時間和計算機硬體時間都是 cst 時間了,并且為上海時區。
【公網 ntp 伺服器】
通路 www.ntp.org 這個的網站,就可以找到一堆時間伺服器的位址
表1 網際網路上的時間伺服器清單
area
hostname
worldwide
pool.ntp.org
asia
asia.pool.ntp.org
europe
europe.pool.ntp.org
north america
north-america.pool.ntp.org
oceania
oceania.pool.ntp.org
south america
south-america.pool.ntp.org
這些伺服器都是可用的,而且對其進行連接配接速度也很快,其中重點推薦 pool.ntp.org ,正像網址名字所表達的,這實際是一個位址池,裡面根據實際情況來實時調整可用伺服器位址。
【确定時區配置】
系統自帶時區檔案儲存在 /usr/share/zoneinfo/ 目錄下,在該目錄下找到 asia/shanghai 拷貝到 /etc 下命名為 localtime 即可。也可以建立軟連接配接,可以保證系統資料有變化時随時更新。
另外一個相關配置檔案是 /etc/sysconfig/clock ,其内容如下
5
6
<code>[root@paxos conf]</code><code># vi /etc/sysconfig/clock</code>
<code># the time zone of the system is defined by the contents of /etc/localtime.</code>
<code># this file is only for evaluation by system-config-date, do not rely on its</code>
<code># contents elsewhere.</code>
預設隻有一行表明自己時區的配置。
【确定 linux 使用的時間方案】
linux 支援 utc (coordinated universal time) 時間,即世界協調時,也就是本初子午線上的時間。它和以前的格林威治标準時(gmt)的差別似乎是它是由多個原子鐘平均出來的。在 /etc/sysconfig/clock 這個檔案中,可以指明 bios 是否使用了 utc 時間,utc=yes 就是用了。
計算機自己還有自己的時間,也就是硬體時間,hard clock,也就是存在 bios 裡那個時間,關機也不會丢失。計算機啟動時,就要讀取這個時間。這個時間如果設定為 utc(gmt),也就是倫敦那地方的時間,就要在 /etc/sysconfig/clock 檔案中設定 utc=yes ,反之則要設為 no 。
是以,隻存在兩種正确的設定:
bios=本地時間,utc=no
bios=utc時間,utc=yes
一般來講,bios 裡面都設定為當地時間。
【本地時間修正】
當執行 date 指令檢視系統時間發現快了 8 小時的情況時,你需要做時間修正。
linux 讀取硬體時間要用到 hwclock 這個指令:
hwclock --show 顯示硬體時間
hwclock --systohc 将系統時間寫入硬體
hwclock --hctosys 将硬體時間寫入系統時間
1.首先,需要校準 date 顯示的系統時間。可以通過 date 指令直接設定,還可以通過 ntpdate 通過外部時間伺服器進行校準。
<code>yum</code><code>install</code> <code>ntpdate</code>
<code>ntpdate pool.ntp.org</code>
此時系統時間就已經與外部 ntp 伺服器時間同步了,相當精确。
2.其次,需要校準 bios 上的硬體時鐘。可以找個精确的時間源,再靠自己的手指來精确設定 bios 時間,還可以通過
hwclock 把準确的時間寫入 bios 。如果已經将系統時間校準了,則可以通過如下指令将時間寫入 bios :
<code>hwclock --systohc</code>
這樣 bios 時間也校準了。以後開機即使沒網絡,沒辦法運作 ntpdate 的時候,系統時間也都是準的。