Ubuntu 配置時區和 NTP 時間同步服務器
在 Linux 系統裏,對於許多與系統相關的任務和進程來說,設置正確的時區非常重要。例如,cron 守護進程使用系統的時區來執行 cron 作業,並且日誌文件中的時間戳基於相同的時區。設置正確的時區後,我們最好配置一個 NTP 時間同步服務器,來確保系統的時間是準確的。否則,如果不同的系統時間不同步,有可能會導致程序執行異常。
在 Ubuntu 上,系統的時區是在安裝過程中設置的,如果安裝完成後發現時區不合適,可以通過命令行或 GUI 界面來修改。
本教程演示如何通過命令行或更改 Ubuntu 18.04 及之前版本的時區。同樣的說明適用於任何基於 ubuntu 的發行版,包括 Kubuntu、Linux Mint 和基本操作系統。
準備工作
你需要以 root 或具有 sudo 權限的用戶登錄,才能更改系統的時區。
檢查當前時區
在 Ubuntu 和大多數其他 Linux 發行版中,我們可以使timedatectl
命令來顯示和設置當前系統的時間和時區。
$timedatectl
從下面的輸出中可以看到,當前時區設置爲 UTC:
Local time: Wed 2019-01-23 22:45:47 UTC
Universal time: Wed 2019-01-23 22:45:47 UTC
RTC time: Wed 2019-01-23 22:45:48
Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
systemd-timesyncd.service active: yes
RTC in local TZ: no
系統時區的配置在符號鏈接文件/etc/localtime
,這個文件鏈接到/usr/share/zoneinfo
目錄中的一個二進制時區配置文件。我們可以用使用ls
命令顯示 symlink 指向的路徑:
$ls -l /etc/localtime
lrwxrwxrwx 1 root root 25 Jan 26 00:45 /etc/localtime -> ../usr/share/zoneinfo/UTC
用timedatectl
命令設置時區
在更改時區之前,需要找出想要使用的時區的長名稱。時區命名約定通常使用 “地區 / 城市” 格式。
要列出所有可用的時區,我們可以列出'/usr/share/zoneinfo'目錄下的文件,或者使用'timedatectl'命令。
$timedatectl list-timezones
...
Europe/Paris
Europe/Riga
Europe/Rome
Europe/Samara
...
Asia/Seoul
Asia/Shanghai
Asia/Singapore
Asia/Taipei
Asia/Tashkent
Asia/Tbilisi
Asia/Thimphu
Asia/Tokyo
...
Once you identify which time zone is accurate to your location, run the following command as sudo user:
找到了時區的正確位置名稱後,以 sudo 用戶運行以下命令:
sudo timedatectl set-timezone your_time_zone
For example, to change the system’s timezone to Europe/Rome
:
比如,改變當前時區爲America/Los_Angeles
sudo timedatectl set-timezone America/Los_Angeles
運行 timedatectl
顯示當前的時區信息,確認修改成功:
$timedatectl
Local time: Mon 2021-01-25 16:44:30 PST
Universal time: Tue 2021-01-26 00:44:30 UTC
RTC time: Tue 2021-01-26 00:44:31
Time zone: America/Los_Angeles (PST, -0800)
System clock synchronized: no
systemd-timesyncd.service active: yes
RTC in local TZ: no
通過重新配置 tzdata 來更改時區
如果你運行的是舊版本的 Ubuntu,並且的系統沒有timedatectl
,你可以通過重新配置 “tzdata” 來更改時區。
- 確定你要更改的時區名稱。
- 使用
tee
命令,將新時區的名稱寫入/etc/timezone
文件,
$echo "America/Los_Angeles" | sudo tee /etc/timezone
$Europe/Rome
- 使用下面的命令,使新的時區配置生效:
$ sudo dpkg-reconfigure --frontend noninteractive tzdata
Current default time zone: 'America/Los_Angeles'
Local time is now: Thu Jan 24 00:40:48 CET 2019.
Universal Time is now: Wed Jan 23 23:40:48 UTC 2019.
配置 NTP 時間同步服務器
NTP 服務器 (Network Time Protocol) 是用來使計算機時間同步化的一種協議,NTP 服務器確保不同的系統之間時間戳保持同步。
在新安裝的 ubuntu 系統上,NTP 服務器默認爲ntp.ubuntu.com
。查看系統日誌,經常出現時間超時記錄:
systemd-timesyncd[354]: Timed out waiting for reply from 91.189.94.4:123 (ntp.ubuntu.com).
要修改時間同步服務器,我們需要修改配置文件/etc/systemd/timesyncd.conf
$ vi /etc/systemd/timesyncd.conf
這個文件的默認內容是這樣的:
# See timesyncd.conf(5) for details.
[Time]
#NTP=
#
#FallbackNTP=ntp.ubuntu.com
#RootDistanceMaxSec=5
#PollIntervalMinSec=32
#PollIntervalMaxSec=2048
把這個的的 time 部分註釋去掉,設置NTP
主時間同步服務器,備用服務器爲FallbackNTP
項,以阿里雲的時間服務器爲例:
[Time]
NTP=ntp1.aliyun.com
FallbackNTP=ntp2.aliyun.com,ntp3.aliyun.com,ntp4.aliyun.com
RootDistanceMaxSec=5
PollIntervalMinSec=32
PollIntervalMaxSec=2048
重啓服務
service systemd-timesyncd restart
總結
這篇教程演示瞭如何修改 Ubuntu 系統的時區和 NTP 時間同步服務器地址。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://www.farland.vip/2021/01/26/ubuntu-change-timezone-ntp-server/