ntpd 和 /etc/localtime 如何影响时间

ntpd 和 /etc/localtime 如何影响时间

有人能解释一下在 UNIX 中或更具体地在 freeBSD 中ntpd/etc/localtime如何system clock相互作用吗?

我将对这些概念进行详细描述,以防我误解其中的一些概念,以便您指出。我真正的问题在下面。

日期 当我们在 shell 中执行“ date modify”时,我认为它会修改/etc/localtime/etc/localtime包含日期和时间以及时区信息,这些信息可以通过glibc类似函数进行查询localtime(),并且时区也可以通过手动设置tzset()

时钟 从网上的其他资料来看,计算机中有两个时钟: 和hardware clocksystem clock硬件时钟由主板上的电池维持,而系统时钟是一个软件概念。 系统时钟将在系统启动时由硬件时钟设置。 但它可以稍后通过ntpd(如果我错了请纠正我)进行调整。

ntpd nptd是一个用户空间进程,在系统启动后几秒启动。它将查询由配置的某些 ntp 服务器ntp.conf。它具有缓慢时间漂移调整的特点,不会对时间产生剧烈变化。(但时区呢,ntpd 是否也会查询时区并逐渐改变?这可能需要太长时间。)对于剧烈的时间更新,有一个ntpupdate()api。

问题

我没有找到任何资源来解释它们之间的相互作用。每个概念似乎都有一些独立的本地文件需要接触和保存。我之所以问这个问题,是因为我观察到,对于我编写的进程,localtime每次用户要求显示某些数据时都会动态调用,但它并没有反映更新的时区变化date modify(进程中时间和时区都没有改变)。

答案1

如果我理解正确的话,我认为以下内容回答了你问题的主要问题:

要更改时区,请用目录树/etc/localtime中的一个文件替换您的/usr/share/zoneinfo。使用命令设置时间date不会更改时区,因此不会对/etc/localtime文件产生任何影响。

请注意,更改时/etc/localtime区不一定会影响正在运行的进程。如果要确保所有守护进程都能看到新的时区,请重新启动。

相关内容