解決伺服器上時間超前的問題
-
- 【同步時間的解決方法】
-
- 【公網 NTP 伺服器】
- 【确定時區配置】
- 【确定 Linux 使用的時間方案】
- 【本地時間修正】
轉載 https://my.oschina.net/moooofly/blog/295847
很多網友在安裝完 CentOS 系統後發現時間與現在時間相差 8 小時,這是由于在安裝系統的時選擇的時區是上海,而 CentOS 預設 BIOS 時間是 UTC 時間,是以時間相差了 8 小時。這個時候的 BIOS 的時間和系統的時間是不一緻的,一個代表 UTC 時間,一個代表 CST 時間(+8時區),即上海時間。
【同步時間的解決方法】
首先,修改時區配置
> vi /etc/sysconfig/clock
> ZONE="Asia/Shanghai"
> UTC=false #> 設定為 false ,硬體時鐘不和 utc 時間一緻
> ARC=false
其次,同步系統時間,并寫入 BIOS
# 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 ,其内容如下
[[email protected] 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 通過外部時間伺服器進行校準。
yum install ntpdate
ntpdate pool.ntp.org
此時系統時間就已經與外部 ntp 伺服器時間同步了,相當精确。
2.其次,需要校準 BIOS 上的硬體時鐘。可以找個精确的時間源,再靠自己的手指來精确設定 BIOS 時間,還可以通過
hwclock 把準确的時間寫入 BIOS 。如果已經将系統時間校準了,則可以通過如下指令将時間寫入 BIOS :
hwclock --systohc
這樣 BIOS 時間也校準了。以後開機即使沒網絡,沒辦法運作 ntpdate 的時候,系統時間也都是準的。