1. 程式人生 > 實用技巧 >解決時間同步

解決時間同步

一:問題

1.問題描述

初學Linux(虛擬機器)的小夥伴(俺也是)可能會遇到這種問題:把時區設定成了東八區,時間也修改成了正確的,但是重啟之後,時間又不對了

2.問題原因

分析

在Linux計算機上,有2個時間,一個是硬體時間(BIOS中記錄的時間,稱為hwclock),另一個是作業系統時間(osclock)

硬體時鐘由BIOS電池供電,在虛擬機器中,一旦關機或者掛起,就會影響硬體時間

當計算機關機後,會繼續執行

在Linux系統中,預設使用的是UTC時間

即使在安裝系統的時候,選擇的時區是亞洲上海,Linux預設的BIOS時間(也稱:硬體時間)也是UTC時間

在重啟之後,系統時間會和硬體時間同步,如果兩者不一致,會以硬體時間為標準

進行時間的校準

所以,之前設定的時區和時間就失效了

UTC

UTC:協調世界時(Universal Time Coordinated) 英文縮寫

是由國際無線電諮詢委員會規定和推薦,並由國際時間局(BIH)負責保持的以秒為基礎的時間標度

UTC相當於本初子午線(即經度0度)上的平均太陽時,過去曾用格林威治平均時(GMT)來表示

北京時間比UTC時間早8小時,以1999年1月1日0000UTC為例,UTC時間是零點,北京時間為1999年1月1日早上8點整

3.檢視時間的相關命令

# 檢視當前系統時間
date


# 檢視當前硬體時間
hwclock

二:解決方法

1.方法1 - 定時同步

① 把當前時區調整為上海(東8區)

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

② 同步標準時間

# 安裝時間同步工具ntpdate(如已安裝,請忽略)
yum install ntpdate -y


# 用工具ntpdate同步時間
ntpdate us.pool.ntp.org

③ 加入定時計劃,每隔5分鐘 同步1次時間

# 配置定時任務
crontab -e

# 按i進入插入模式,輸入以下內容
0-59/10 * * * * /usr/sbin/ntpdate us.pool.ntp.org | logger -t NTP

2.方法2

① 編輯時間配置檔案

# 用vim開啟配置(如果沒裝vim,可以把vim換成vi)
vim /etc/sysconfig/clock


# 按i進入插入模式,輸入以下內容(# 註釋可以不復制)
ZONE="Asia/Shanghai"
UTC=false	# 設定為false,硬體時鐘不於utc時間一致
ARC=false

② 將Linux時區設定為上海

# 建立同步連線
ln -sf /usr/share/zoneinfo/Asia/Shanghai    /etc/localtime

③ 同步標準時間

# 安裝時間同步工具ntpdate(如已安裝,請忽略)
yum install ntpdate -y


# 用工具ntpdate同步時間
ntpdate us.pool.ntp.org

④ 設定硬體時間和系統時間一致並校準

/sbin/hwclock --systohc