Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

第 3 章 配置日期和时间

现代操作系统区分以下两种时钟:

  • 实时时钟 (RTC ),通常称为硬件时钟(通常是系统板上的集成电路),完全独立于操作系统的当前状态并在计算机关机时运行。
  • 系统时钟 (也称为软件时钟 )由内核维护,其初始值基于实时时钟。引导系统且系统时钟初始化后,系统时钟就完全独立于实时时钟。

系统时间始终保持在统一世界时间 (UTTC)中,并根据需要在应用程序中转换为本地时间。本地时间是当前时区的实际时间 ,考虑到夏天节省时间 (DST)。实时时钟可以使用 UTC 或本地时间。建议 UTC。

Red Hat Enterprise Linux 7 提供了三个命令行工具,可用于配置和显示有关系统日期和时间的信息:

  • timedatectl 工具,它是 Red Hat Enterprise Linux 7 中的新功能,是 systemd 的一部分。
  • 传统的 date 命令.
  • 用于访问硬件时钟的 The hwclock 实用程序.

3.1. 使用 timedatectl 命令

timedatectl 工具作为 systemd 系统和服务管理器的一部分发布,可让您查看和更改系统时钟的配置。您可以使用此工具更改当前的日期和时间,设置时区,或者启用与远程服务器自动同步系统时钟。

有关如何以自定义格式显示当前日期和时间的详情,请参考 第 3.2 节 “使用 date 命令”

3.1.1. 显示当前日期和时间

要显示当前的日期和时间,以及有关系统和硬件时钟配置的详细信息,请在没有附加命令行选项的情况下运行 timedatectl 命令:

timedatectl

这会显示本地和通用时间、当前使用的时区、网络时间协议(NTP)配置的状态,以及与 DST 相关的其他信息。

例 3.1. 显示当前日期和时间

以下是一个不使用 NTP 将系统时钟与远程服务器同步的系统中 timedatectl 命令的输出示例:

~]$ timedatectl
   Local time: Mon 2016-09-16 19:30:24 CEST
 Universal time: Mon 2016-09-16 17:30:24 UTC
    Timezone: Europe/Prague (CEST, +0200)
   NTP enabled: no
NTP synchronized: no
 RTC in local TZ: no
   DST active: yes
 Last DST change: DST began at
         Sun 2016-03-31 01:59:59 CET
         Sun 2016-03-31 03:00:00 CEST
 Next DST change: DST ends (the clock jumps one hour backwards) at
         Sun 2016-10-27 02:59:59 CEST
         Sun 2016-10-27 02:00:00 CET
重要

timedatectl 不会立即注意到对 chronyntpd 状态的更改。如果更改了这些工具的配置或状态,请输入以下命令:

~]# systemctl restart systemd-timedated.service

3.1.2. 更改当前时间

要更改当前时间,以 root 用户身份在 shell 提示符后输入以下内容:

timedatectl set-time HH:MM:SS

HH 替换为一小时,MM 替换为一分钟,SS 替换为秒,全部以两位数形式键入。

此命令同时更新系统时间和硬件时钟。结果类似于使用 date --sethwclock --systohc 命令。

如果启用了 NTP 服务,该命令将失败。请参阅 第 3.1.5 节 “将系统时钟与远程服务器同步” 以临时禁用该服务。

例 3.2. 更改当前时间

要将当前时间更改为 11:26,以 root 用户身份运行以下命令:

~]# timedatectl set-time 23:26:00

默认情况下,系统配置为使用 UTC。要将您的系统配置为在本地时间维护时钟,以 root 用户身份使用 set-local-rtc 选项运行 timedatectl 命令:

timedatectl set-local-rtc boolean

要将您的系统配置为在本地时间维护时钟,请将 布尔值 替换为 yes (或者 y、ytruet1)。要将系统配置为使用 UTC,请将 布尔值 替换为 no (或者 n、nfalsef0)。默认选项为 no

3.1.3. 更改当前日期

要更改当前日期,以 root 用户身份在 shell 提示符后输入以下内容:

timedatectl set-time YYYY-MM-DD

YYY 替换为四位数年,MM 替换为两位数月,DD 替换为每月的两位数。

请注意,在不指定当前时间的情况下更改日期会导致将时间设置为 00:00:00。

例 3.3. 更改当前日期

要将当前日期更改为 2017 年 6 月 2 日并保留当前时间(下午 11:26),以 root 用户身份运行以下命令:

~]# timedatectl set-time "2017-06-02 23:26:00"

3.1.4. 更改时区

要列出所有可用时区,在 shell 提示符后输入以下内容:

timedatectl list-timezones

要更改当前使用的时区,以 root 用户身份输入

timedatectl set-timezone time_zone

使用 time datectl list-timezones 命令列出的任何值替换 time _zone

例 3.4. 更改时区

要确定哪一个时区与您当前位置最接近,请使用 timedatectl 命令和 list-timezones 命令行选项。例如,要列出欧洲所有可用时区,请输入:

~]# timedatectl list-timezones | grep Europe
Europe/Amsterdam
Europe/Andorra
Europe/Athens
Europe/Belgrade
Europe/Berlin
Europe/Bratislava

要将时区更改为 欧洲/地区,root 用户身份输入

~]# timedatectl set-timezone Europe/Prague

3.1.5. 将系统时钟与远程服务器同步

与前面部分所述的手动调整不同,timedatectl 命令还允许您使用 NTP 协议自动与一组远程服务器同步系统时钟。启用 NTP 可启用 chronydntpd 服务,具体取决于安装了哪些服务。

使用以下命令可以启用或禁用 NTP 服务:

timedatectl set-ntp boolean

要让您的系统能够将系统时钟与远程 NTP 服务器同步,请将 布尔值 替换为 yes (默认选项)。要禁用此功能,请将 布尔值 替换为 no

例 3.5. 将系统时钟与远程服务器同步

要启用与远程服务器自动同步系统时钟,请输入:

~]# timedatectl set-ntp yes

如果未安装 NTP 服务,命令将失败。如需更多信息,请参阅 第 18.3.1 节 “安装 chrony”