一、計時方式的發展
1.古代計時方式?
- 公元前約 2000 年:古埃及人利用光線留下的影子計時,他們修建高聳的大型方尖碑,通過追蹤方尖碑影子的移動判斷時間,這是早期利用自然現象計時的典型方式 。?
- 商朝時期:人們開發并使用泄水型水鐘 —— 漏壺。通過水從壺中緩慢流出,依據水位下降的刻度來記錄時間,開啟了利用流體計時的新階段。?
- 北宋元祐元年(1086 年):天文學家蘇頌將渾儀、渾象和報時裝置結合,建造出 “水運儀象臺”。它不僅能觀測天象,還能準確計時與報時,是古代機械計時技術的集大成者。?
- 14 世紀:機械鐘在西方國家廣泛使用,推動計時工具向機械化發展。?
- 16世紀:奧斯曼帝國的科學家達茲?艾 - 丁(Taqi al - Din)發明機械鬧鐘,為計時工具增添新功能。?
- 1583 年:伽利略提出著名的等時性理論,指出不論擺動幅度大小,擺完成一次擺動的時間相同,為鐘表計時精度提升奠定理論基礎。?
- 1656 年:荷蘭科學家克里斯蒂安?惠更斯(Christiaan Huygens)應用伽利略的理論,設計出世界第一只鐘擺,大幅提升了機械鐘表的計時精度。?
- 1868 年:百達翡麗(Patek Philippe)發明手表,使計時工具更加便于攜帶,適應人們日常使用需求。?
2.現代計時方式?
- 1967 年:瑞士發布世界上首款石英表。石英晶體在電池電力作用下產生規律振動(每秒振動 32768 次),通過電路計算振動次數確定時間,石英鐘表因精準、成本低迅速普及。?
- 拉比提出原子鐘構想后逐步發展?:拉比依據原子從高 “能量態” 遷至低 “能量態” 時釋放電磁波并產生共振頻率的原理,構想出原子鐘(Atomic clock )。如今,銫原子(Caesium133)鐘被很多國家(包括我國和美國 NIST)的標準局用作時間精度標準,GPS 系統也依賴其精確計時。?
- 2008 年:鍶(Strontium87)原子鐘誕生,固有頻率約合 430 萬億赫茲,將精度提升到 10 的 17 次方。?
- 2013 年:由鐿元素(ytterbium)制成的原子鐘問世,固有頻率約合 518 萬億赫茲,精度高達 10 的 18 次方,若從 138 億年前宇宙誕生時開始計時,至今誤差不超過 1 秒。此外,網絡時間授時服務出現,用戶可借此獲取統一、標準的時間信號,極大簡化時間同步過程。
二、時間同步服務
多主機協作工作時,各個主機的時間同步很重要,時間不一致會造成很多重要應用的故障,如:加密協議,日志,集群等,利用NTP(Network Time Protocol )協議使網絡中的各個計算機時間達到同步。目前NTP協議屬于運維基礎架構中必備的基本服務之一。
Linux 時間同步服務的工具主要有 NTP 和 Chrony :
- ntp:將系統時鐘和世界協調時 UTC 同步。局域網內,其精度可達 0.1ms,可滿足企業關鍵業務系統等對時間精度要求高的場景。互聯網上絕大多數地方,精度課達到?1 - 50ms,能滿足普通網站服務器等應用的時間同步需求。ntp 項目官網是?http://www.ntp.org,在官網可獲取軟件、文檔和社區支持等資源。
- chrony:作為實現 NTP 協議的自由軟件,功能強大靈活。不僅能與 NTP 服務器同步,還支持 GPS 接收器等參考時鐘,也可手動輸入時間。chrony 能作為 NTPv4 服務器和對等體,為網絡計算機提供時間服務。它適應多種復雜環境,在間歇性、擁擠網絡,以及系統運行不連續或虛擬機場景下都能穩定工作。通過 Internet 同步時精度在幾毫秒內,LAN 環境下精度為幾十微秒,借助硬件時間戳或參考時鐘可實現亞微秒級精度,常用于金融交易系統、航空航天控制等對時間精度要求極高的領域。
?三、時間同步服務的使用
1.系統時間及時區管理?
timedatectl 命令總結:
timedatectl | 查看系統時間 |
timedatectl set-time "2026-11-11 11:11:11" | 設定系統時間 |
timedatectl list-timezones | 顯示系統的所有時區 |
timedatectl set-timezone "Asia/Shanghai" | 設定系統時區 |
timedatectl set-local-rtc 0|1 | 設定系統時間計算方式 (0表示 utc?時間計算方式,1表示 cst 時間計算方式) |
①timedatectl:查看系統時間?
Local time | 當前系統時間 |
Universal time | 倫敦時間 |
RTC time | 硬件時間 |
Time zone | 時區 |
System clock synchronized | 系統時間同步開啟 |
NTP service | NTP 協議開啟 |
RTC in local TZ | 硬件時間是否使用本地時間 |
修改時間需要關掉 chronyd.service,?NTP service 從 active 變為 inactive。
②timedatectl set-time "2026-11-11 11:11:11":設定系統時間為 2026-11-11 11:11:11?
③timedatectl list-timezones:列出系統中所有可用的時區?
④timedatectl set-timezone "Asia/Amman":將時區改為 Asia/Amman ,位于東三區(+0300),后面再改回?Asia/Shanghai。
⑤timedatectl set-local-rtc 1:RTC time 使用 Local time,(硬件時間同步本地時間),警告提示:跨區進行數據傳輸時會出現問題
⑥timedatectl set-local-rtc 0:RTC time 使用 Universal time(硬件時間同步倫敦時間)
2.客戶端使用公共 ntp 地址同步網絡時間
pool:指定時間源為?ntp.ntsc.ac.cn
iburst:當服務重啟時,立即向?ntp.ntsc.ac.cn 主機發送同步時間的請求(選項當服務器可達時,發送一個八個數據包而不是通常的一個數據包,包間隔通常為2秒,可加快初始同步速度)
chronyc sources –v:顯示時間同步信息,圖中可知時間與 114.118.7.163 主機的時間同步
*:表示同步當前最優主機時間? ? ? ? ? ? ? ? ? ? ? ? ??:表示不可達?
- M:時間源模式 ^表示服務器,=表示對等方,#表示本地連接的參考時鐘
- S:指源的狀態
? ? ? ? ??*? ? 表示?chronyd?當前已經同步到的源。
????????? +? ?表示可接受的信號源,與選定的信號源組合在一起。
????????? -? ? 表示被合并算法排除的可接受源
????????? ?? ?指已失去連接性或者其數據包未通過所有測試的源。
????????? x? ?表示chronyd認為時虛假行情的時鐘,即標記該時間與其他多數時間不一致
????????? ~? ?表示時間似乎具有太多可變性
- Name/IP address:顯示源的名稱或IP地址
- Stratum:顯示時間來源的層
- Poll:顯示輪詢源的速率
- Reach:顯示源的可達性寄存器以八進制數字打印
- LastRx:顯示多長時間前從來源接收到了最后一個好的樣本
- Last sample:此列顯示上次測量時本地時鐘與源之間的偏移
3.時間同步服務器的搭建
兩臺主機,192.168.10.200 作為服務器,增加 192.168.10.20 作為客戶端,目的使客戶端(192.168.10.20)同步服務器(192.168.10.200)的時間。以下是客戶端主機的配置:
1)服務器(192.168.10.200)的命令配置
allow 0.0.0.0/0:允許所有人看服務器的時間,0表示沒有,也表示全部
local stratum 10:設定時間層為第10層,即使 server 指令中時間服務器不可用,也允許將本地時間作為標準時間授時給其它客戶端
重啟服務器中的時間同步服務,并查看時間同步情況
netstat -antlupe | prep chronyd:檢測系統當中的端口(開了哪些端口)
-antlupe 的解釋說明:
a:顯示所有連接和監聽端口
n:解析,以數字形式顯示地址和端口號
t:顯示 TCP 連接和監聽端口。
l:顯示處于監聽狀態的套接字
u:顯示 UDP 連接和監聽端口
p:顯示進程的 PID(進程 ID)和名稱
e:顯示擴展信息
在服務器端還需關閉火墻,才能同步時間。?
2)客戶端(192.168.10.20)測試同步服務器時間
先修改客戶端的時間,便于觀察后續是否同步服務器時間。date 命令只能改系統時間,不能改硬件時間(RTC time)。
date 命令解釋:
11? ?11? ?11? ?11? ?2026 .?11
月? ?日?? 時?? 分? ? ?年? ? ? 秒
然后指定 ip 為服務器的 ip(192.168.10.200)?
重啟 chronyd 服務,然后查看可知已同步 192.168.10.200 的時間。