Linux 上的系统时钟与硬件时钟
在 Linux 系统上,系统时钟和硬件时钟有不同的用途。系统时钟由操作系统维护,硬件时钟由BIOS维护。由于主板上有 CMOS 电池,当计算机关闭时,硬件时钟将继续保持时间。每当计算机开机时,系统时钟都会通过查询在线时间服务器来维护时间。
如果没有互联网连接,硬件时钟将在安装时设置系统时钟的时间。除了这种情况之外,Linux 中的硬件时钟几乎没有用处。相反,Linux 使用 systemd 将系统时间与在线服务器或 NTPD 服务器同步。
Linux 程序和服务将依赖于系统时钟,而不是硬件时钟。通常,每当计算机关闭时,硬件时钟就会与系统时间同步。这样,硬件时间就可以保持准确,并且通常在计算机关闭时不会偏离超过几毫秒。在本教程中,您将了解系统时钟和硬件时钟之间的区别,以及可用于在 Linux 中查看或设置硬件时钟和系统时钟的命令。
在本教程中您将学习:
硬件时钟和系统时钟有什么区别
如何查看和设置硬件时钟
如何查看和设置系统时间和时区
Linux 上的系统时钟与硬件时钟
现在您已经知道系统时钟和硬件时钟之间的区别,您可以尝试下面的一些命令来查看时间并根据需要更改它们。
您可以使用以下命令查看硬件时钟的时间。这个时间也可以在 BIOS 或 UEFI 屏幕中看到。
$ sudo hwclock 2022-10-08 15:00:00.885214-0400
date
命令通常是 Linux 中查询系统时间最常用的方法。$ date Sat Oct 8 15:00:09 EDT 2022
使用 timedatectl 命令查看有关系统时钟的所有相关信息。
$ timedatectl Local time: Sat 2022-10-08 15:01:58 EDT Universal time: Sat 2022-10-08 19:01:58 UTC RTC time: Sat 2022-10-08 19:01:59 Time zone: America/New_York (EDT, -0400) System clock synchronized: yes systemd-timesyncd.service active: yes RTC in local TZ: no
如果您的系统时间与硬件时钟时间不同,您可以使用
--systohc
选项将硬件时钟更改为当前系统时钟时间。$ sudo hwclock --systohc
反之亦然。要根据硬件时钟设置系统时钟时间,请使用
--hctosys
选项。$ sudo hwclock --hctosys
如果您想将系统时钟设置为任意日期和时间,请确保时间同步已关闭并使用以下
date
命令。此命令会将日期和时间设置为2021 年 1 月 10 日中午 12:00
,但可以替换为您想要的任何值。$ sudo timedatectl set-ntp off $ sudo date -s "10 JAN 2021 12:00:00"
将系统时间设置为与特定时区同步:
$ sudo timedatectl set-timezone Australia/Sydney
并查看可用时区的列表:
$ timedatectl list-timezones Australia/Adelaide Australia/Brisbane Australia/Broken_Hill Australia/Currie Australia/Darwin Australia/Eucla Australia/Hobart Australia/Lindeman Australia/Lord_Howe Australia/Melbourne Australia/Perth Australia/Sydney ....
结束语
在本教程中,我们了解了 Linux 系统上系统时钟和硬件时钟之间的差异。我们还了解了如何使用 hwclock
和 timedatectl
命令设置硬件时钟和系统时钟。强烈建议保持两个时钟准确同步,以便您的系统继续按预期运行。