天天看點

【原創】CentOS 系統時間超前 8 小時解決辦法

      很多網友在安裝完 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 的時候,系統時間也都是準的。 

繼續閱讀