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


      很多網友在安裝完 CentOS 系統后發現時間與現在時間相差 8 小時,這是由於在安裝系統的時選擇的時區是上海,而 CentOS 默認 BIOS 時間是 UTC 時間,所以時間相差了 8 小時。這個時候的 BIOS 的時間和系統的時間是不一致的,一個代表 UTC 時間,一個代表 CST 時間(+8時區),即上海時間。


【同步時間的解決方法】

首先,修改時區配置

?
1
2
3
4
# vi /etc/sysconfig/clock
ZONE= "Asia/Shanghai"
UTC= false            # 設置為 false ,硬件時鍾不和 utc 時間一致
ARC= false

其次,同步系統時間,並寫入 BIOS 

?
1
2
3
# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime      # linux 的時區設置為上海
# ntpdate pool.ntp.org                 # 通過公網 NTP 服務器校准時間
# /sbin/hwclock --systohc              # 設置硬件時間和系統時間一致並校准

至此,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 ,其內容如下 

?
1
2
3
4
5
6
[root@Paxos conf] # vi /etc/sysconfig/clock
 
# The time zone of the system is defined by the contents of /etc/localtime.
# This file is only for evaluation by system-config-date, do not rely on its
# contents elsewhere.
ZONE= "Asia/Shanghai"

默認只有一行表明自己時區的配置。 


【確定 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 通過外部時間服務器進行校准。 

?
1
2
yum install ntpdate
ntpdate pool.ntp.org

此時系統時間就已經與外部 ntp 服務器時間同步了,相當精確。 

2.其次,需要校准 BIOS 上的硬件時鍾。可以找個精確的時間源,再靠自己的手指來精確設定 BIOS 時間,還可以通過 
hwclock 把准確的時間寫入 BIOS 。如果已經將系統時間校准了,則可以通過如下命令將時間寫入 BIOS : 

?
1
hwclock --systohc

這樣 BIOS 時間也校准了。以后開機即使沒網絡,沒辦法運行 ntpdate 的時候,系統時間也都是准的。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM