Red Hat Training

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

3.3. 使用 hwclock 命令

hwclock 是访问硬件时钟的实用程序,也称为实时时钟(RTC)。硬件时钟独立于您使用的操作系统,即使在机器关闭时也能正常工作。此实用程序用于显示硬件时钟的时间。Hwclock 还包含用于补偿硬件时钟中系统偏移的功能。

硬件时钟存储以下值:year、month、day、hour、minute 和 second。它无法存储时间标准、本地时间或协调的通用时间(UTC),也无法设置夏天制(DST)。

The hwclock 实用程序将其设置保存在 /etc/adjtime 文件中,该文件会在您进行第一次更改时创建,例如,当您手动设置时间或将硬件时钟与系统时间同步时。

注意

有关 Red Hat Enterprise Linux 6 和 7 之间的 hwclock 行为更改,请参阅 Red Hat Enterprise Linux 7 迁移规划指南

3.3.1. 显示当前日期和时间

由于 root 用户将日期和时间返回本地时间的日期和时间到标准输出,因此不带命令行选项的 Running hwclock

hwclock

请注意,在 hwclock 命令中使用 --utc 或 --localtime 选项并不意味着您在 UTC 或本地时间显示硬件时钟时间。这些选项用于设置硬件时钟,以在其中任何一个中保持时间。时间始终在本地时间显示。另外,使用 hwclock --utc or hwclock --local 命令不会更改 /etc/adjtime 文件中的记录。如果您知道 /etc/adjtime 中保存的设置不正确,但您不想更改设置,此命令非常有用。另一方面,如果以错误的方式使用命令,您可能会收到误导的信息。详情请查看 hwclock(8)手册页。

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

要显示当前日期以及硬件时钟的当前本地时间,以 root 用户身份运行:

~]# hwclock
Tue 15 Apr 2017 04:23:46 PM CEST   -0.329272 seconds

CEST 是时区缩写,代表中欧夏季时间。

有关如何更改时区的详情请参考 第 3.1.4 节 “更改时区”

3.3.2. 设置日期和时间

除了显示日期和时间外,您还可以手动将硬件时钟设置为特定的时间。

当您需要更改硬件时钟日期和时间时,您可以根据您的规格附加 --set--date 选项:

hwclock --set --date "dd mmm yyyy HH:MM"

dd 替换为一天(一个两位数),mmm 替换为一个月(一个三字母缩写),yyy 替换为一年(四位数字)、HH 替换为一小时(两位数),MM 替换为分钟(两位数)。

同时,您还可以通过添加 --utc 或 -- localtime 选项,将硬件时钟设置为在 UTC 或本地时间中保持时间。在这种情况下,UTCLOCAL 会记录在 /etc/adjtime 文件中。

例 3.10. 将硬件时钟设置为特定日期和时间

如果要将日期和时间设置为特定值,例如:"21:17, 2016 年 10 月 21 日",并在 UTC 中保持硬件时钟,以 root 用户身份以以下格式运行命令:

~]# hwclock --set --date "21 Oct 2016 21:17" --utc

3.3.3. 同步日期和时间

您可以在两个方向上同步硬件时钟和当前系统时间。

  • 您可以使用这个命令将硬件时钟设置为当前系统时间:

    hwclock --systohc

    请注意,如果您使用 NTP,硬件时钟每 11 分钟会自动同步到系统时钟中,此命令仅在启动时用于获得合理的初始系统时间。

  • 或者,您可以使用以下命令从硬件时钟设置系统时间:

    hwclock --hctosys

当您同步硬件时钟和系统时间时,您还可以通过添加 --utc 或 -- localtime 选项来指定是否要将硬件时钟保留在本地时间或 UTC 中。与使用 --set 类似UTCLOCAL 也会记录在 /etc/adjtime 文件中。

The hwclock --systohc --utc 命令的功能类似于 timedatectl set-local-rtc false,s hwclock --systohc --local 命令是 timedatectl set-local-rtc true 的替代选择。

例 3.11. 将硬件时钟与系统时间同步

要将硬件时钟设置为当前系统时间并保留硬件时钟在本地时间,以 root 用户身份运行以下命令:

~]# hwclock --systohc --localtime

为避免时区和 DST 切换出现问题,建议在 UTC 中保持硬件时钟。显示的 例 3.11 “将硬件时钟与系统时间同步” 很有用,例如,如果使用 Windows 系统进行多次引导,且假设硬件时钟默认在本地时间运行,所有其他系统还需要使用本地时间容纳它。虚拟机也可能需要它;如果主机提供的虚拟硬件时钟正在本地时间运行,则还需要将 guest 系统配置为使用本地时间。