嗨,能帮我了解一下timedatctl的工作原理吗?
启用NTP服务后,只更新本地+通用时间,但不更新RTC时间,为什么?
发布于 2022-10-17 09:59:35
以下可能对您理解的第二部分有所帮助,摘自hwclock的手册页。
在某些系统中,您应该知道硬件时钟保持同步的另一种方式。Linux内核有一种模式,它每11分钟将系统时间复制到硬件时钟。此模式是编译时选项,因此并非所有内核都具有此功能。这是一个很好的模式,当您使用一些复杂的东西,如NTP,以保持您的系统时钟同步。(NTP是一种使您的系统时间保持同步的方法,它可以与网络上的某个时间服务器或连接到您的系统的无线电时钟保持同步。见RFC 1305)
如果内核是用'11分钟模式‘选项编译的,那么当内核的时钟规则处于同步状态时,它将处于活动状态。在此状态下,未设置内核的time_status变量的位6(在掩码0x0040中设置的位)。此值作为adjtimex -print或ntptime命令的“状态”行输出。
它会受到外界的影响,比如NTP守护进程将内核的时钟规则设置为同步状态,从而打开'11分钟模式‘。它可以通过运行任何以老式方式设置系统时钟的方法来关闭,包括hwclock hctosys。但是,如果NTP守护进程仍在运行,它将在下次同步系统时钟时再次打开“11分钟模式”。
如果您的系统以“11分钟模式”运行,它可能需要在启动脚本中使用-hctosys或- system,特别是当硬件时钟被配置为使用本地时间刻度时。除非内核被告知硬件时钟使用的时间刻度,否则它可能会用错误的时间刻度来打击它。内核默认使用UTC。
设置系统时钟的第一个userspace命令通知内核硬件时钟使用什么时间刻度。这是通过persistent_clock_is_local内核变量实现的。如果--hctosys或-systz是第一个,它将根据adjtime文件或适当的命令行参数设置这个变量。注意,在使用此功能并更改硬件时钟刻度配置时,需要重新启动才能通知内核。
hwclock - NTP '11分钟模式‘不应使用调整。
我不知道11分钟模式是否是内核的正常功能。我怀疑是的。
还要检查systemd-timedated.service是否正在运行。
发布于 2022-10-17 12:18:28
如果系统时钟通过internet与NTP服务同步,则系统时间将更新到当前日期和时间。
是的,除非系统太不同步,以致NTP服务认为某些东西严重错误并放弃了。
如果系统时钟与NTP同步,它将每11分钟更新一次RTC,对吗?
有可能,但不总是这样。默认情况下,经典的ntpd
会这样做;只有当rtcsync
关键字在/etc/chrony/chrony.conf
配置文件中使用时,chronyd
才会这样做。有关其他NTP同步服务实现,请参见该特定实现的文档。
https://unix.stackexchange.com/questions/721249
复制相似问题