如何在Ubuntu上設(shè)置時(shí)間同步
你可能設(shè)置過 cron 任務(wù) 來在特定時(shí)間備份重要文件或執(zhí)行系統(tǒng)相關(guān)任務(wù)。也許你配置了一個(gè)日志服務(wù)器在特定時(shí)間間隔輪轉(zhuǎn)日志。但如果你的時(shí)鐘不同步,這些任務(wù)將無法按時(shí)執(zhí)行。這就是要在 Linux 系統(tǒng)上設(shè)置正確的時(shí)區(qū)并保持時(shí)鐘與互聯(lián)網(wǎng)同步的原因。本指南介紹如何在 Ubuntu Linux 上設(shè)置時(shí)間同步。下面的步驟已經(jīng)在 Ubuntu 18.04 上進(jìn)行了測試,但是對(duì)于使用 systemd 的 timesyncd
服務(wù)的其他基于 Ubuntu 的系統(tǒng)它們是相同的。
在 Ubuntu 上設(shè)置時(shí)間同步
通常,我們?cè)诎惭b時(shí)設(shè)置時(shí)區(qū)。但是,你可以根據(jù)需要更改或設(shè)置不同的時(shí)區(qū)。
首先,讓我們使用 date
命令查看 Ubuntu 系統(tǒng)中的當(dāng)前時(shí)區(qū):
$ date
示例輸出:
Tue Jul 30 11:47:39 UTC 2019
如上所見,date
命令顯示實(shí)際日期和當(dāng)前時(shí)間。這里,我當(dāng)前的時(shí)區(qū)是 UTC,代表協(xié)調(diào)世界時(shí)。
或者,你可以在 /etc/timezone
文件中查找當(dāng)前時(shí)區(qū)。
$ cat /etc/timezone
UTC
現(xiàn)在,讓我們看看時(shí)鐘是否與互聯(lián)網(wǎng)同步。只需運(yùn)行:
$ timedatectl
示例輸出:
Local time: Tue 2019-07-30 11:53:58 UTC
Universal time: Tue 2019-07-30 11:53:58 UTC
RTC time: Tue 2019-07-30 11:53:59
Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
systemd-timesyncd.service active: yes
RTC in local TZ: no
如你所見,timedatectl
命令顯示本地時(shí)間、世界時(shí)、時(shí)區(qū)以及系統(tǒng)時(shí)鐘是否與互聯(lián)網(wǎng)服務(wù)器同步,以及 systemd-timesyncd.service
是處于活動(dòng)狀態(tài)還是非活動(dòng)狀態(tài)。就我而言,系統(tǒng)時(shí)鐘已與互聯(lián)網(wǎng)時(shí)間服務(wù)器同步。
如果時(shí)鐘不同步,你會(huì)看到下面截圖中顯示的 System clock synchronized: no
。
時(shí)間同步已禁用。
注意:上面的截圖是舊截圖。這就是你看到不同日期的原因。
如果你看到 System clock synchronized:
值設(shè)置為 no
,那么 timesyncd
服務(wù)可能處于非活動(dòng)狀態(tài)。因此,只需重啟服務(wù)并看下是否正常。
$ sudo systemctl restart systemd-timesyncd.service
現(xiàn)在檢查 timesyncd
服務(wù)狀態(tài):
$ sudo systemctl status systemd-timesyncd.service
● systemd-timesyncd.service - Network Time Synchronization
Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2019-07-30 10:50:18 UTC; 1h 11min ago
Docs: man:systemd-timesyncd.service(8)
Main PID: 498 (systemd-timesyn)
Status: "Synchronized to time server [2001:67c:1560:8003::c7]:123 (ntp.ubuntu.com)."
Tasks: 2 (limit: 2319)
CGroup: /system.slice/systemd-timesyncd.service
└─498 /lib/systemd/systemd-timesyncd
Jul 30 10:50:30 ubuntuserver systemd-timesyncd[498]: Network configuration changed, trying to estab
Jul 30 10:50:31 ubuntuserver systemd-timesyncd[498]: Network configuration changed, trying to estab
Jul 30 10:50:31 ubuntuserver systemd-timesyncd[498]: Network configuration changed, trying to estab
Jul 30 10:50:32 ubuntuserver systemd-timesyncd[498]: Network configuration changed, trying to estab
Jul 30 10:50:32 ubuntuserver systemd-timesyncd[498]: Network configuration changed, trying to estab
Jul 30 10:50:35 ubuntuserver systemd-timesyncd[498]: Network configuration changed, trying to estab
Jul 30 10:50:35 ubuntuserver systemd-timesyncd[498]: Network configuration changed, trying to estab
Jul 30 10:50:35 ubuntuserver systemd-timesyncd[498]: Network configuration changed, trying to estab
Jul 30 10:50:35 ubuntuserver systemd-timesyncd[498]: Network configuration changed, trying to estab
Jul 30 10:51:06 ubuntuserver systemd-timesyncd[498]: Synchronized to time server [2001:67c:1560:800
如果此服務(wù)已啟用并處于活動(dòng)狀態(tài),那么系統(tǒng)時(shí)鐘應(yīng)與互聯(lián)網(wǎng)時(shí)間服務(wù)器同步。
你可以使用命令驗(yàn)證是否啟用了時(shí)間同步:
$ timedatectl
如果仍然不起作用,請(qǐng)運(yùn)行以下命令以啟用時(shí)間同步:
$ sudo timedatectl set-ntp true
現(xiàn)在,你的系統(tǒng)時(shí)鐘將與互聯(lián)網(wǎng)時(shí)間服務(wù)器同步。
使用 timedatectl 命令更改時(shí)區(qū)
如果我想使用 UTC 以外的其他時(shí)區(qū)怎么辦?這很容易!
首先,使用命令列出可用時(shí)區(qū):
$ timedatectl list-timezones
你將看到類似于下圖的輸出。
使用 timedatectl 命令列出時(shí)區(qū)
你可以使用以下命令設(shè)置所需的時(shí)區(qū)(例如,Asia/Shanghai):
(LCTT 譯注:本文原文使用印度時(shí)區(qū)作為示例,這里為了便于使用,換為中國標(biāo)準(zhǔn)時(shí)區(qū) CST。另外,在時(shí)區(qū)設(shè)置中,要注意 CST 這個(gè)縮寫會(huì)代表四個(gè)不同的時(shí)區(qū),因此建議使用城市和 UTC+8 來說設(shè)置。)
$ sudo timedatectl set-timezone Asia/Shanghai
使用 date
命令再次檢查時(shí)區(qū)是否已真正更改:
$ date
Tue Jul 30 20:22:33 CST 2019
或者,如果需要詳細(xì)輸出,請(qǐng)使用 timedatectl
命令:
$ timedatectl
Local time: Tue 2019-07-30 20:22:35 CST
Universal time: Tue 2019-07-30 12:22:35 UTC
RTC time: Tue 2019-07-30 12:22:36
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
systemd-timesyncd.service active: yes
RTC in local TZ: no
如你所見,我已將時(shí)區(qū)從 UTC 更改為 CST(中國標(biāo)準(zhǔn)時(shí)間)。()
要切換回 UTC 時(shí)區(qū),只需運(yùn)行:
$ sudo timedatectl set-timezone UTC
使用 tzdata 更改時(shí)區(qū)
在較舊的 Ubuntu 版本中,沒有 timedatectl
命令。這種情況下,你可以使用 tzdata
(Time zone data)來設(shè)置時(shí)間同步。
$ sudo dpkg-reconfigure tzdata
選擇你居住的地理區(qū)域。對(duì)我而言,我選擇 Asia。選擇 OK,然后按回車鍵。
接下來,選擇與你的時(shí)區(qū)對(duì)應(yīng)的城市或地區(qū)。這里,我選擇了 Kolkata(LCTT 譯注:中國用戶請(qǐng)相應(yīng)使用 Shanghai 等城市)。
最后,你將在終端中看到類似下面的輸出。
Current default time zone: 'Asia/Shanghai'
Local time is now: Tue Jul 30 21:59:25 CST 2019.
Universal Time is now: Tue Jul 30 13:59:25 UTC 2019.
在圖形模式下配置時(shí)區(qū)
有些用戶可能對(duì)命令行方式不太滿意。如果你是其中之一,那么你可以輕松地在圖形模式的系統(tǒng)設(shè)置面板中進(jìn)行設(shè)置。
點(diǎn)擊 Super 鍵(Windows 鍵),在 Ubuntu dash 中輸入 settings,然后點(diǎn)擊設(shè)置圖標(biāo)。
從 Ubuntu dash 啟動(dòng)系統(tǒng)的設(shè)置
或者,單擊位于 Ubuntu 桌面右上角的向下箭頭,然后單擊左上角的“設(shè)置”圖標(biāo)。
從頂部面板啟動(dòng)系統(tǒng)的設(shè)置
在下一個(gè)窗口中,選擇“細(xì)節(jié)”,然后單擊“日期與時(shí)間”選項(xiàng)。打開“自動(dòng)的日期與時(shí)間”和“自動(dòng)的時(shí)區(qū)”。
在 Ubuntu 中設(shè)置自動(dòng)時(shí)區(qū)
關(guān)閉設(shè)置窗口就行了!你的系統(tǒng)始終應(yīng)該與互聯(lián)網(wǎng)時(shí)間服務(wù)器同步了。