跳轉到內容

Ict-innovation/LPI/108.1

來自華夏公益教科書

108.1: 保持系統時間

[編輯 | 編輯原始碼]

考生應能夠正確維護系統時間並透過 NTP 同步時鐘


關鍵知識領域

  • 設定系統日期和時間。
  • 將硬體時鐘設定為 UTC 的正確時間。
  • 配置正確的時區。
  • 基本 NTP 配置。
  • 瞭解使用 pool.ntp.org 服務

系統時間和硬體時鐘

[編輯 | 編輯原始碼]

Linux 系統中存在兩個獨立的時鐘。硬體時鐘(在主機板上)獨立於作業系統執行,即使計算機關閉時也是如此。系統時間由 Linux 核心維護,並由計時器中斷遞增。Linux 啟動時,它會從硬體時鐘初始化系統時間。Linux 通常不會在執行時再次引用硬體時鐘。

可以使用 hwclock 實用程式檢查和修改硬體時鐘。主要選項是

-r 或 --show 列印當前時間

-w 或 --systohc 將硬體時鐘設定為當前系統時間

-s 或 --hctosys 將系統時間設定為當前硬體時鐘時間

--set 將硬體時鐘設定為指定的時間和日期

只有超級使用者可以更改硬體時鐘設定

例子

# hwclock --set --date="10/14/2010 16:55:05"

# hwclock --show

Thu 14 Oct 2010 04:55:09 PM BST -0.673528 seconds

系統時間由核心維護,作為自 1970 年 1 月 1 日開始的秒數。這個時間點被稱為“紀元”。

使用 date 命令顯示系統時間

$ date

Tue Sep 14 10:18:33 BST 2010

系統時間也可以使用 date 命令更改。只有超級使用者可以執行此操作。語法是

date MMDDhhmmCCYY[.ss]

例子

# date 101216552010

Tue Oct 12 16:55:00 BST 2010

時區

計算機的硬體時鐘通常設定為 UTC,無論計算機的地理位置如何。但是,date 命令報告(和設定)的時間通常是計算機的本地時區。時區定義了本地時間與 UTC 之間的偏移量。在某些 Linux 發行版中,時區在 /etc/timezone 檔案中定義。

除了 UCT 時間,一些國家/地區還實施“夏令時”政策,每年在特定日期新增或刪除一小時。這些政策由 /usr/share/zoneinfo/ 中的檔案定義。這些是二進位制檔案。透過將適當的區域檔案複製到 /etc/localtime,可以建立特定的區域政策。

例如,如果我們將 /usr/share/zoneinfo/Hongkong 複製到 /etc/localtime,那麼下次我們執行 date 時,它將為我們提供香港的時間。這是因為 date 每次執行時都會讀取 /etc/localtime。


使用 NTP

由於時鐘頻率中的微小誤差,硬體時鐘和系統時間都可能漂移。隨著時間的推移,這些漂移可能會累積。計算機之間的時鐘偏差可能會導致諸如 make 之類的工具出現問題,這些工具會檢查檔案的時間戳,以及使用時間戳來限制身份驗證訊息有效性的身份驗證協議。

NTP(網路時間協議)是一種協議,可以將計算機的時鐘與時間伺服器同步,精度達到毫秒級。

直接更新(例如,透過原子鐘)的計算機稱為時間伺服器,用於更新更多數量的從屬時間伺服器。這形成類似於 DNS 結構的樹結構。根伺服器位於第一層或stratum,從屬伺服器位於第二層,依此類推。


配置客戶端以查詢 NTP 伺服器:

一個名為 ntpd 的 NTP 守護程式用於定期查詢一個或多個遠端時間伺服器。它調整核心時鐘的速率,使其逐漸調整到正確的時間。避免突然變化,尤其是將時鐘調回。守護程式非常易於配置。只需在 /etc/ntp.conf 中有一個或多個伺服器條目指向公共或企業 NTP 伺服器即可。可以線上在 http://support.ntp.org 找到公共 NTP 伺服器列表

pool.ntp.org 上的時間伺服器使用 DNS“迴圈”從自願加入池的眾多時間伺服器池中隨機選擇一個。這對於許多終端使用者來說已經足夠了。使用池的簡單 ntp.conf 檔案可能如下所示

server 0.pool.ntp.orgserver 1.pool.ntp.org
driftfile /var/lib/ntp/ntp.drift


NTP 協議還可以根據一系列查詢來估計硬體時鐘的頻率誤差;此估計值將寫入由 driftfile 標籤引用的檔案。

ntpd 啟動後,它本身將成為一個 NTP 伺服器,在埠 123 上提供使用 UDP 的服務。


一次性調整:

ntp 包還提供 ntpdate 工具,可用於從命令列設定時間。-q 選項只是查詢伺服器,沒有 -q,命令將設定系統時間。

例子

$ ntpdate -q ntp.ubuntu.com

server 91.189.94.4, stratum 2, offset 0.009249, delay 0.05046

14 Sep 11:25:23 ntpdate[9493]: adjust time server 91.189.94.4 offset 0.009249



以下是使用過的檔案、術語和實用程式的部分列表:* /usr/share/zoneinfo

  • /etc/timezone
  • /etc/localtime
  • /etc/ntp.conf
  • date
  • hwclock
  • ntpd
  • ntpdate
  • pool.ntp.org


上一章 | 下一章

華夏公益教科書