如何在 Linux 中設置時間、時區及同步時鐘
在本文中,了解如何使用 timedatectl、systemd-timesyncd 和 chrony 設定時間、時區以及與 NTP 同步您的 Linux 系統時鐘。 :
「timedatectl」指令是 RHEL 系列和 Debian 系列發行版的工具,並且它是「systemd」系統與服務管理器的一部分,用於取代傳統在以「sysvinit」守護程序為基礎的 Linux 發行版中使用的舊有 date 指令。
timedatectl 命令允許你查詢和更改系統時鐘及其設定,你可以使用此命令來設置或更改當前的日期、時間和時區,或啟用與遠端 NTP 伺服器的自動系統時鐘同步。
在本教程中,我將帶領你了解如何透過終端機在你的 Linux 系統上管理時間,包括設定日期、時間、時區,以及使用 NTP 同步時間,並介紹如何使用 timedatectl、systemd-timesyncd 和 chrony。
在您的 Linux 伺服器或系統上維持正確的時間總是一個好習慣,這可以帶來以下好處:
- 維持系統任務的及時運行,因為 Linux 中大多數任務都是由時間控制的。
- 在系統上記錄事件和其他資訊的準確時間。
- 分散式系統與應用程式的適當同步。
- 對於像 Kerberos 以及 SSL/TLS 憑證驗證等安全協議至關重要。
如何在 Linux 中查找並設置本地時區
1. 若要在系統上顯示目前的時間和日期,請從命令列使用 timedatectl 指令,如下所示:
timedatectl status
在上方的輸出中,RTC 時間是硬體時鐘時間。
2. 你的 Linux 系統上的 時間 總是透過系統設定的 時區 來管理,要查看當前的時區,可按以下方式操作:
timedatectl
OR
timedatectl | grep Time
3. 若要查看所有可用的時區,請執行以下命令:
timedatectl list-timezones
4. 要根據您的位置找到當地時區,請執行以下命令。
timedatectl list-timezones | egrep -o "Asia/B.*"
timedatectl list-timezones | egrep -o "Europe/L.*"
timedatectl list-timezones | egrep -o "America/N.*"
5. 要在 Linux 中設定您的本地時區,我們將使用如下所示的 set-timezone 選項。
sudo timedatectl set-timezone "Asia/Kolkata"
timedatectl status
建議始終使用並設定協調世界時間,UTC。
sudo timedatectl set-timezone UTC
timedatectl status
您需要輸入正確的時區名稱,否則在更改時區時可能會出現錯誤,在以下範例中,時區Asia/Kolkata不正確,因此會導致錯誤。
failed to set time zone: invalid timezone
如何在 Linux 中設定時間和日期
您可以使用 timedatectl 命令在系統上設置日期和時間,如下所示:
在 Linux 設定時間
6。若僅設定時間,我們可以使用 set-time 開關,並搭配 HH:MM:SS(時、分、秒)的時間格式。
sudo timedatectl set-time 12:25:30
timedatectl status
當如上設置日期時,您可能會遇到以下錯誤:
Failed to set time: Automatic time synchronization is enabled
此錯誤發生是因為啟用了自動時間同步(NTP),這會阻止手動更改時間。
要修復它,首先停用 NTP,然後設定時間。
sudo timedatectl set-ntp false
sudo timedatectl set-time 12:25:30
timedatectl status
7。要同時設定日期和時間,請使用 set-time 參數,並按照 YYYY-MM-DD(年、月、日)的日期格式,以及 HH:MM:SS(時、分 和 秒)的時間格式:
sudo timedatectl set-time '2026-01-23 12:25:30'
如何在 Linux 中查找和設置硬體時鐘
8. 要將您的硬體時鐘設置為協調世界時(UTC),請使用 set-local-rtc boolean-value 選項,如下所示:
首先確認您的硬體時鐘是否設定為當地時區:
timedatectl | grep local
將硬體時鐘設置為本地時區:
sudo timedatectl set-local-rtc 1
將您的硬體時鐘設置為協調世界時(UTC):
sudo timedatectl set-local-rtc 0
注意:不建議將 RTC 設定為當地時間,這可能會在夏令時間調整時引起問題,因此最好將 RTC 保持在 UTC。
將 Linux 系統時鐘與遠端 NTP 伺服器同步
NTP 代表 網路時間協定,是一種網際網路協定,用於同步電腦之間的系統時鐘。
timedatectl 工具能讓你使用 NTP 自動將 Linux 系統時鐘與遠端伺服器群組同步。
大多數現代 Linux 發行版使用不同的 NTP 同步實作方式:
- systemd-timesyncd:一個輕量級的 SNTP(簡易 NTP)客戶端,內建於 systemd 中,適合大多數桌面和單一伺服器環境使用。
- chrony:一個功能完整的 NTP 實作,既可以作為客戶端也可以作為伺服器使用。它能更好地處理間歇性的網路連線,並且更準確。
使用 systemd-timesyncd
要開始與遠端 NTP 伺服器進行自動時間同步,請在終端機輸入以下指令,這將啟用並啟動 systemd-timesyncd 服務。
sudo timedatectl set-ntp true
要禁用 NTP 時間同步,請在終端機輸入以下指令。
sudo timedatectl set-ntp false
檢查同步狀態:
timedatectl status
你應該會看到「系統時鐘已同步:是」和「NTP 服務:啟用」。」
使用 chrony(建議用於伺服器)
如果您正在運行伺服器或需要更可靠的時間同步,chrony 是更好的選擇,它特別適用於:
- 不持續運行的系統(筆記型電腦、桌上型電腦)。
- 伺服器需要高精確度。
- 網絡連接不穩定的系統。
- 在時間一致性至關重要的群集環境中。
首先,安裝 chrony(如果尚未安裝):
sudo apt install chrony [On Debian-based systems]
sudo dnf install chrony [On RHEL-based systems]
注意:安裝 chrony 將自動停用 systemd-timesyncd 以防止衝突。
安裝後,啟用、啟動並檢查同步狀態:
sudo systemctl enable --now chronyd
timedatectl status
若要使用您自己的 NTP 伺服器而非預設的伺服器,您需要編輯 Chrony 設定檔。
sudo nano /etc/chrony/chrony.conf
OR
sudo nano /etc/chrony/sources.d/custom.sources
新增您偏好的 NTP 伺服器(您可以從 NTP Pool Project 獲取 NTP 伺服器清單)。
pool 0.pool.ntp.org iburst
pool 1.pool.ntp.org iburst
pool 2.pool.ntp.org iburst
變更後重新啟動 chrony:
sudo systemctl restart chronyd
關於 NTP 同步的重要注意事項
- 你不能同時運行多個 NTP 實現,因此請選擇 systemd-timesyncd 或 chrony。
- systemd-timesyncd 是僅限用戶端的實作,無法為其他系統提供時間服務。
- chrony 可以同時作為時間客戶端和本地網路的時間伺服器。
- 對於生產伺服器和關鍵基礎設施,一般建議使用 chrony 而不是 systemd-timesyncd。
- NTP 需要開放 UDP 123 端口以進行外發連接。
摘要
這些是在本教程中描述的非常簡單的範例,我希望你會覺得它們對設定各種 Linux 系統時鐘和時區有所幫助。
要瞭解更多關於此工具的資訊,請前往 timedatectl 手冊頁面。
man timedatectl
如果你對這篇文章有任何想法,歡迎留言提供更多資訊。










