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 或本地时间显示硬件时钟时间。这些选项用于设置硬件时钟,以在其中任何一个中保持时间。时间始终在本地时间显示。另外,使用 --utc
或 --localtimehwclock --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 或本地时间中保持时间。在这种情况下,UTC
或 LOCAL
会记录在 /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 类似
,UTC
或 LOCAL
也会记录在 /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 系统配置为使用本地时间。