天天看點

同步linux伺服器時間

解決伺服器上時間超前的問題

    • 【同步時間的解決方法】
      • 【公網 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 的時候,系統時間也都是準的。

繼續閱讀