在 Ubuntu 中使用 NTP 進(jìn)行時間同步設(shè)置
NTP 是通過網(wǎng)絡(luò)來同步時間的一種 TCP/IP 協(xié)議。通??蛻舳讼蚍?wù)器請求當(dāng)前的時間,并根據(jù)結(jié)果來設(shè)置其時鐘。
這個描述是挺簡單的,實現(xiàn)這一功能卻是極為復(fù)雜的 - 首先要有多層 NTP 服務(wù)器,第一層 NTP 服務(wù)器連接原子時鐘,第二層、第三層服務(wù)器則擔(dān)起負(fù)載均衡的責(zé)任,以處理因特網(wǎng)傳來的所有請求。另外,客戶端可能也超乎你想象的復(fù)雜 - 它必須排除通訊延遲,調(diào)整時間的同時不干擾其它在服務(wù)器中運行的進(jìn)程。幸運的是,所有的這些復(fù)雜性都進(jìn)行了封裝,你是不可見也不需要見到的。
在 Ubuntu 中,是使用 ntpdate 和 ntpd 來同步時間的。
timedatectl
在最新的 Ubuntu 版本中,timedatectl 替代了老舊的 ntpdate。默認(rèn)情況下,timedatectl 在系統(tǒng)啟動的時候會立刻同步時間,并在稍后網(wǎng)絡(luò)連接激活后通過 socket 再次檢查一次。
如果已安裝了 ntpdate / ntp,timedatectl 會退而讓你使用之前的設(shè)置。這樣確保了兩個時間同步服務(wù)不會相互沖突,同時在你升級的時候還保留原本的行為和配置。但這也意味著從舊版本的發(fā)行版升級時 ntp/ntpdate 仍會安裝,因此會導(dǎo)致新的基于 systemd 的時間服務(wù)被禁用。
timesyncd
在最新的 Ubuntu 版本中,timesyncd 替代了 ntpd 的客戶端的部分。默認(rèn)情況下 timesyncd 會定期檢測并同步時間。它還會在本地存儲更新的時間,以便在系統(tǒng)重啟時做時間單步調(diào)整。
通過 timedatectl 和 timesyncd 設(shè)置的當(dāng)前時間狀態(tài)和時間配置,可以使用 timedatectl status 命令來進(jìn)行確認(rèn)。
timedatectl status
Local time: Fri 2016-04-29 06:32:57 UTC
Universal time: Fri 2016-04-29 06:32:57 UTC
RTC time: Fri 2016-04-29 07:44:02
Time zone: Etc/UTC (UTC, +0000)
Network time on: yes
NTP synchronized: no
RTC in local TZ: no
如果安裝了 NTP,并用它替代 timedatectl 來同步時間,則 NTP synchronized 將被設(shè)置為 yes。
timedatectl 和 timesyncd 用來獲取時間的 nameserver 可以通過 /etc/systemd/timesyncd.conf 來指定,另外在 /etc/systemd/timesyncd.conf.d/ 下還有靈活的附加配置文件。
ntpdate
由于 timedatectl 的存在,各發(fā)行版已經(jīng)棄用了 ntpdate,默認(rèn)不再進(jìn)行安裝。如果你安裝了,它會在系統(tǒng)啟動的時候根據(jù) Ubuntu 的 NTP 服務(wù)器來設(shè)置你電腦的時間。之后每當(dāng)一個新的網(wǎng)絡(luò)接口啟動時,它就會重新嘗試同步時間 —— 在這期間只要其涵蓋的時間差不是太大,它就會慢慢偏移時間。該行為可以通過 -B/-b 開關(guān)來進(jìn)行控制。
ntpdate ntp.ubuntu.com
時間服務(wù)器
默認(rèn)情況下,基于 systemd 的工具都是從 ntp.ubuntu.com 請求時間同步的。經(jīng)典的基于 ntpd 的服務(wù)基本上都是使用 [0-3].ubuntu.pool.ntp.org 池中的 2.ubuntu.pool.ntp.org,還有 ntp.ubuntu.com,此外需要的話還支持 IPv6。如果想強制使用 IPv6,可以使用 ipv6.ntp.ubuntu.com,不過這并非默認(rèn)配置。
ntpd
ntp 的守護(hù)進(jìn)程 ntpd 會計算你的系統(tǒng)時鐘的時間偏移量并且持續(xù)的進(jìn)行調(diào)整,所以不會出現(xiàn)時間差距較大的更正,比如說,不會導(dǎo)致不連續(xù)的日志。該進(jìn)程只花費少量的進(jìn)程資源和內(nèi)存,但對于現(xiàn)代的服務(wù)器來說實在是微不足道的了。
安裝
要安裝 ntpd,在終端命令行中輸入:
sudo apt install ntp
配置
編輯 /etc/ntp.conf —— 增加/移除 server 行。默認(rèn)配置有以下服務(wù)器:
# Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board # on 2011-02-08 (LP: #104525). See http://www.pool.ntp.org/join.html for # more information. server 0.ubuntu.pool.ntp.org server 1.ubuntu.pool.ntp.org server 2.ubuntu.pool.ntp.org server 3.ubuntu.pool.ntp.org
修改配置文件之后,你需要重新加載 ntpd:
sudo systemctl reload ntp.service
查看狀態(tài)
使用 ntpq 來查看更多信息:
# sudo ntpq -p remote refid st t when poll reach delay offset jitter ======================================================== +stratum2-2.NTP. 129.70.130.70 2 u 5 64 377 68.461 -44.274 110.334 +ntp2.m-online.n 212.18.1.106 2 u 5 64 377 54.629 -27.318 78.882 *145.253.66.170 .DCFa. 1 u 10 64 377 83.607 -30.159 68.343 +stratum2-3.NTP. 129.70.130.70 2 u 5 64 357 68.795 -68.168 104.612 +europium.canoni 193.79.237.14 2 u 63 64 337 81.534 -67.968 92.792
PPS 支持
從 Ubuntu 16.04 開始,ntp 支持 PPS 規(guī)范,給 ntp 提供了本地時間源,以提供更高的精度。以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
詳解linux 定時任務(wù) crontabs 安裝及使用方法
這篇文章主要介紹了linux 定時任務(wù) crontabs 安裝及使用方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-07-07
Linux6.7卸載系統(tǒng)自帶的mysql-libs* crontab命令不能用了原因分析
這篇文章主要介紹了Linux6.7卸載系統(tǒng)自帶的mysql-libs* crontab命令不能用了原因分析及解決方法,非常不錯,需要的朋友參考下吧2016-12-12
apache中偽靜態(tài)配置和使用(Apache虛擬主機(jī)下Discuz偽靜態(tài))
apache中偽靜態(tài)配置和使用(Apache虛擬主機(jī)下Discuz偽靜態(tài)),需要的朋友可以參考下。2012-01-01
Linux下如何檢查網(wǎng)卡bonding狀態(tài)和切換主備網(wǎng)卡
這篇文章主要介紹了Linux下如何檢查網(wǎng)卡bonding狀態(tài)和切換主備網(wǎng)卡問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11

