如何使用chrony进行“一次性”时间同步?

39
我正在寻找chrony套件中类似于'ntpdate IP地址'命令的等效命令,以立即强制chronyd同步时间。

1
你真的应该查看文档...chronyd -q以这种模式运行时,chronyd将设置系统时钟一次并退出。它不会从终端分离。 - user3788685
4个回答

64

尝试

sudo chronyc -a makestep

这将快速更新您的系统时钟(可能会破坏一些正在运行的应用程序),使用在/etc/chronyd.conf中定义的时间源。

-a选项是必需的,以避免

501未授权错误


2
我收到了“501未授权”错误的返回,并且时钟保持不变。 - Dimitry K
你真的在以root(sudo)身份运行吗?你正在与chronyd交互,因为它拒绝了你。这在chrony FAQ中有详细说明。 - Richard Green
是的,以root身份运行。我刚刚双重确认了一下。 - Dimitry K
好的,我之前在运行旧的Ubuntu 14.04.5服务器和Chrony版本1.29。我猜那里可能需要一些身份验证步骤或其他东西... - Dimitry K
8
请尝试使用“-a”参数(自动进行身份验证)来运行。sudo chronyc -a makestep - StackEng2010
3
chronyc (chrony)版本3.5.1(+READLINE +SECHASH +IPV6 +DEBUG)(Fedora 32)的手册中指出,选项-a被忽略。 - Richard Green

17

使用chrony等效于ntpdate SERVER-ADDRESS命令的是:

    chronyd -q 'server SERVER-ADDRESS iburst'

请注意,chronyd 在执行此操作时不能已经运行,就像使用 ntpdate 设置日期时不能运行 ntpd 一样。


之后我通常需要额外执行以下命令: sudo systemctl start chronyd; sudo chronyc -a 'burst 4/4' - olopopo

11

出于各种原因,在我的设置中, chronyd 被禁用,我们想要偶尔手动与 NTP 服务器同步。

对于这种情况,Rob Newton 的答案中的命令是有效的(谢谢!)。

请注意,如果您查询ntp 池,建议使用 pool 命令,如下所示:

chronyd -q 'pool pool.ntp.org iburst'

请参考此问题了解更多细节。
另外请注意,如果 chronyd 服务开启,则 Richard Green的回答中的命令sudo chronyc -a makestep将不会生效,因为它试图与 chronyd 守护进程通信。

0

如果你遇到了以下问题:

Could not read keyfile or commandkey in file /etc/chrony.conf

运行时:

sudo chronyc -a makestep

接下来确保你在/etc/chrony.conf文件中有以下这行:

keyfile /etc/chrony.keys

确保您在 /etc/chrony.keys 中为密钥 0 设置了密码:

0 SHA1 HEX:9222248F87B1FDDB01716FC8F1A7B5AB13CDAC91

您可以生成一个SHA1哈希密码:

echo -n Th15is4Pa55w0rd! | sha1sum
9222248F87B1FDDB01716FC8F1A7B5AB13CDAC91

如果这不起作用,可能是因为您在/etc/chrony.conf中将commandkey指定为0以外的其他内容。默认值为0,因此如果设置为其他内容,则需要将其与/etc/chrony.keys中的内容对齐。

我一直以为key 0表示“没有使用钥匙”。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接