網站搜尋

如何在 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

檢查 Linux 系統時間和日期

在上方的輸出中,RTC 時間是硬體時鐘時間。

2. 你的 Linux 系統上的 時間 總是透過系統設定的 時區 來管理,要查看當前的時區,可按以下方式操作:

timedatectl 
OR
timedatectl | grep Time

檢查您的 Linux 系統時區

3. 若要查看所有可用的時區,請執行以下命令:

timedatectl list-timezones

列出 Linux 系統上的所有時區

4. 要根據您的位置找到當地時區,請執行以下命令。

timedatectl list-timezones |  egrep  -o "Asia/B.*"
timedatectl list-timezones |  egrep  -o "Europe/L.*"
timedatectl list-timezones |  egrep  -o "America/N.*"

在 Linux 中找到您的本地時區

5. 要在 Linux 中設定您的本地時區,我們將使用如下所示的 set-timezone 選項。

sudo timedatectl set-timezone "Asia/Kolkata"
timedatectl status

在 Linux 系統上設置本地時區

建議始終使用並設定協調世界時間,UTC。

sudo timedatectl set-timezone UTC
timedatectl status

將您的系統時間設定為 UTC

您需要輸入正確的時區名稱,否則在更改時區時可能會出現錯誤,在以下範例中,時區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

在 Linux 中設定日期和本地時間

7。要同時設定日期和時間,請使用 set-time 參數,並按照 YYYY-MM-DD(年、月、日)的日期格式,以及 HH:MM:SS(時、分 和 秒)的時間格式:

sudo timedatectl set-time '2026-01-23 12:25:30'

使用 YY:MM:DD 和 HH:MM:SS 格式配置日期和時間

如何在 Linux 中查找和設置硬體時鐘

8. 要將您的硬體時鐘設置為協調世界時(UTC),請使用 set-local-rtc boolean-value 選項,如下所示:

首先確認您的硬體時鐘是否設定為當地時區:

timedatectl | grep local

將硬體時鐘設置為本地時區:

sudo timedatectl set-local-rtc 1

在 Linux 上將硬體時鐘設為 UTC

將您的硬體時鐘設置為協調世界時(UTC):

sudo timedatectl set-local-rtc 0

將您的硬體時鐘設為 UTC

注意:不建議將 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

如果你對這篇文章有任何想法,歡迎留言提供更多資訊。