在Linux中设置时区并将系统时钟同步到您的时区

在本教程中,我们将研究如何在Linux中更改您的时区设置,以及如何使用NTP将Linux系统时钟同步到您的时区。

检查时区设置

检查当前时区设置。

date

输出:

2016年 03月 02日 星期三 02:50:15 EST

如您所见,我的系统设置为EST(东部标准时间)。 但是我现在住在中国。 因此,我需要将时区设置从EST更改为CST(中国标准时间)。

在基于Debian的Linux发行版上更改时区

在基于Debian的Linux发行版上,包括Debian,Ubuntu,Linux Mint,Elementary OS等,您可以使用此命令更改时区设置。

sudo dpkg-reconfigure tzdata

它将在终端中打开一个对话框,让您选择地理区域。

接下来,选择与您的时区相对应的城市或地区。 我住在中国,所以选择了上海。

选择与您的时区相对应的城市或地区。

当你打 按钮,您的系统时钟将立即更改为您的时区时钟。

与时区无关的更改时区设置的方法

此方法适用于所有Linux发行版。 首先打开一个终端并运行以下命令:

sudo ln -sf /usr/share/zoneinfo/

不要按 输入 但是,按 标签 代替。

更改时区设置

将显示一个地理区域列表,现在在之后输入您所在区域的名称 须藤ln -sf / usr / share / zoneinfo /。 例如,我进入了亚洲。 然后按 标签 再次键。 将出现城市列表。

在终端中更改时区设置

输入与您的时区相对应的城市名称。 例如,我进入上海。 现在按空格键并输入 / etc / localtime。 所以最后的命令是

sudo ln -sf /usr/share/zoneinfo/your-geographic-area/your-city /etc/localtime

按Enter键运行此命令。 它将创建一个符号链接指向 / etc / localtime 文件到您的特定时区文件。 您可以通过输入以下命令来查找系统时钟 日期 终端中的命令。 但是具有桌面环境(例如XFCE)的用户需要注销并重新登录,以查看任务栏上的更改。

实时时钟

RTC代表实时时钟,也称为硬件时钟。 此时钟由计算机主板的CMOS电池供电。 即使关闭计算机,此时钟也会一直运行。 有时RTC时间不正确。

要找出计算机上的RTC时间,请运行以下命令:

timedatectl

输出:

Local time: Wed 2016-03-02 17:47:19 CST
 Universal time: Wed 2016-03-02 09:47:19 UTC
 RTC time: Wed 2016-03-02 09:47:19
 Time zone: Asia/Shanghai (CST, +0800)
 Network time on: yes
 NTP synchronized: yes
 RTC in local TZ: no

如您所见,我的当地时间现在 17:49:19,但RTC时间为 09:47:19。 RTC时间不在我的本地时区,如果RTC时间不正确,有时可能会导致问题。 RTC时间不可靠。

要让您的系统以UTC标准读取RTC时间,请执行以下命令。

timedatectl set-local-rtc 0

要让系统读取本地时区的RTC时间,请运行以下命令

timedatectl set-local-rtc 1

建议您的系统以UTC标准读取RTC时间,以防止意外行为。

将系统时钟同步到您的时区

有时,即使您设置了正确的时区,您的系统时钟仍然可能不正确。 为了确保系统时钟同步到本地时区,您需要NTP。

NTP的工作是在您的网络上提供准确的时间,并且有许多服务都依赖准确的时间来正确运行。 NTP同步网络中的时钟,以使时间尽可能精确。 NTP是一种应用程序层协议,它使用UDP作为传输层协议。 网络时间服务器从原子钟获取时间。

在systemd上,您可以使用timedatectl启用NTP同步。

sudo timedatectl set-ntp true

上面的命令将启动并启用systemd-timesyncd服务。 现在检查状态

timedatectl status

输出:

     Local time: Wed 2016-03-02 18:30:35 CST
 Universal time: Wed 2016-03-02 10:30:35 UTC
       RTC time: Wed 2016-03-02 10:30:35
      Time zone: Asia/Shanghai (CST, +0800)
Network time on: yes
NTP synchronized: yes
RTC in local TZ: no

您可以看到网络时间已打开,并且启用了NTP同步。 要检查时间同步的状态:

sudo systemctl status systemd-timesyncd

输出:

● systemd-timesyncd.service - Network Time Synchronization
  Loaded: loaded (/usr/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled)
  Active: active (running) since Wed 2016-03-02 18:30:29 CST; 1h 37min ago
    Docs: man:systemd-timesyncd.service(8)
Main PID: 2243 (systemd-timesyn)
  Status: "Synchronized to time server 202.112.29.82:123 (0.arch.pool.ntp.org)."
   Tasks: 2 (limit: 512)
  CGroup: /system.slice/systemd-timesyncd.service
  └─2243 /usr/lib/systemd/systemd-timesyncd
Sidebar