Chrony 客户端不会更改系统和硬件日期

Alr*_*ick 4 date clock chrony

语境

\n\n
    \n
  • 森托斯7
  • \n
  • chronyd (chrony) 版本 3.1
  • \n
\n\n

问题

\n\n

chonyd我遇到服务器日期问题。

\n\n

首先,将当前日期更改为旧日期

\n\n

我将硬件时钟日期从当前实际日期更改mar. nov. 27 15:57:12 CET 2018mer. d\xc3\xa9c. 12 12:12:12 CET 2012使用以下命令:

\n\n
hwclock --set --date="12/12/2012 12:12:12"\nhwclock -s\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后,启动 chronyd 服务来获取真正的好日期

\n\n

我使用 启动 chronyd 服务systemctl start chronyd,并使用 检查状态systemctl status chronyd,以下输出显示该chronyd服务正在正确运行:

\n\n
\xe2\x97\x8f chronyd.service - NTP client/server\n   Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)\nActive: active (running) since mer. 2012-12-12 12:20:14 CET; 27min ago\n\n...\n\nd\xc3\xa9c. 12 12:20:17 pad chronyd[1808]: Selected source 178.32.220.7\nd\xc3\xa9c. 12 12:20:17 pad chronyd[1808]: System clock wrong by 188017778.899985 seconds, adjustment started\nd\xc3\xa9c. 12 12:25:37 pad chronyd[1808]: Selected source 62.210.211.218\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是/etc/chrony.conf配置文件:

\n\n
# Record the rate at which the system clock gains/losses time.\ndriftfile /var/lib/chrony/drift\n\n# Enable kernel synchronization of the real-time clock (RTC).\nrtcsync\n\n# Enable hardware timestamping on all interfaces that support it.\nhwtimestamp *\n\n# Specify directory for log files.\nlogdir /var/log/chrony\n\nserver 0.fr.pool.ntp.org minpoll 0 maxpoll 0\nserver 1.fr.pool.ntp.org minpoll 0 maxpoll 0\nserver 2.fr.pool.ntp.org minpoll 0 maxpoll 0\nserver 3.fr.pool.ntp.org minpoll 0 maxpoll 0\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是启动chronyc sources后的输出chronyd

\n\n
^+ obelix.fraho.eu               2   0   377     0   -876us[ -876us] +/-   12ms\n^- bb8.dousse.eu                 2   7   377    40  -1547us[-1547us] +/-   52ms\n^- cdg1.m-d.net                  2   6   377    39   -806us[ -806us] +/-   33ms\n^* cluster004.linocomm.net       2   7   377   100   +330us[ +384us] +/- 7957us\n
Run Code Online (Sandbox Code Playgroud)\n\n

输出表明服务器已连接,显示ntp 主机服务器^+的字符obelix.fraho.eu

\n\n

最后,我等待 chronyd 守护进程更新日期并显示日期

\n\n

60 多分钟后,我在终端中运行命令date并得到以下输出:

\n\n
mer. d\xc3\xa9c. 12 13:15:04 CET 2012\n
Run Code Online (Sandbox Code Playgroud)\n\n

chronyd 尚未更新日期...

\n\n

文件夹/var/log/chronyd/是空的

\n\n

任何想法 ?

\n

fra*_*san 8

引用官方FAQchronyd只会逐步调整时钟:

默认情况下,chronyd 通过减慢或加快时钟来逐渐调整时钟。如果时钟与真实时间相差太远,则需要很长时间才能纠正错误。chronyc 的跟踪命令打印的系统时间值是需要应用于系统时钟的剩余校正。

如此处所述,您可能能够通过观察输出线来验证您的时钟是否确实调整(有关详细信息,请参阅中的部分)。System timechronyc trackingtrackingman chronyc

为了chronyd能够步进时钟,您必须makestep在以下位置添加指令chrony.conf

# Step the clock on the first three updates
# if its offset is larger than one second
makestep 1 3
Run Code Online (Sandbox Code Playgroud)

有时 - 例如在可以暂停和恢复的虚拟机上 - 您可能希望chronyd在任何更新上计时,而不仅仅是启动后的第一个更新:

# Step the clock on any update 
# if its offset is larger than one second
makestep 1 -1
Run Code Online (Sandbox Code Playgroud)

但请记住官方文档中的警告(同样来自man chronyc):

[...] 任何时间跳跃都可能对某些应用程序产生不利后果。