我怎样才能让 ntpdate 忽略偏差?

我怎样才能让 ntpdate 忽略偏差?

在服务器引导过程中,我希望明确运行ntpdate而不是依赖ntp守护进程。但是,此时时钟可能会严重偏差,从而导致执行时出错sudo ntpdate address.of.ntp.server。我注意到,在多次运行此命令后,它最终会起作用,可能是因为在同一日期积累了许多样本,但是我找不到此规范。我想要的是只取一个样本,强制ntpdate接受响应,然后通过启动 ntp sudo service ntp start。我该怎么做?

编辑:我按照建议尝试sudo ntpd -g -q,但仍然出现以下错误/var/log/syslog

Sep 26 12:14:29 jd-0922-node1 ntpd[22239]: ntpd [email protected] Wed Oct  9 19:08:06 UTC 2013 (1)
Sep 26 12:14:29 jd-0922-node1 ntpd[22239]: proto: precision = 0.115 usec
Sep 26 12:14:29 jd-0922-node1 kernel: [173176.189773] type=1400 audit(1411758869.717:48): apparmor="DENIED" operation="open" profile="/usr/sbin/ntpd" name="/usr/local/sbin/" pid=22239 comm="ntpd" requested_mask="r" denied_mask="r" fsuid=0 ouid=0
Sep 26 12:14:29 jd-0922-node1 kernel: [173176.189779] type=1400 audit(1411758869.717:49): apparmor="DENIED" operation="open" profile="/usr/sbin/ntpd" name="/usr/local/bin/" pid=22239 comm="ntpd" requested_mask="r" denied_mask="r" fsuid=0 ouid=0
Sep 26 12:14:29 jd-0922-node1 ntpd[22239]: ntp_io: estimated max descriptors: 1024, initial socket boundary: 16
Sep 26 12:14:29 jd-0922-node1 ntpd[22239]: unable to bind to wildcard address 0.0.0.0 - another process may be running - EXITING

答案1

听起来你的时钟偏差超过了恐慌阈值。然而,这并不能解释为什么多次调用 ntpdate 可以解决问题。说实话,我想不出任何可以通过多次调用 ntpdate 来克服的错误。

无论如何,ntpdate 已被弃用。我认为最可能的解释是您的时钟超过了恐慌阈值。您需要在 ntpd 启动时为其提供 -g 选项。编辑“/etc/default/ntp”并确保存在以下行:

 NTPD_OPTS='-g'

文档-g

-g  Normally, ntpd  exits with  a message  to the  system log  if
    the  offset exceeds  the  panic  threshold, which  is  1000 s  by
    default.  This  option allows  the time  to be  set to  any value
    without restriction; however, this can  happen only once.  If the
    threshold is exceeded  after that, ntpd will exit  with a message
    to the sys‐ tem log.  This option  can be used with the -q and -x
    options.

如果您列出使用 ntpdate 收到的实际错误消息,那么提出建议会更容易。您是否有可能看到有关 slew 而不是 skew 的内容?

更新:

您没有正确启动/停止 ntpd。使用 sudo 时无法绑定到地址的原因是 ntpd 已在运行。我并没有建议您使用说sudo ntpd -g -q 实话我根本没有提到 -q,我不知道您为什么不想连续运行 ntpd。使用一次性时钟校正并退出是个坏主意。我真的认为您需要评估为什么您认为这种一次性模式比连续运行 ntpd 更好。

无需进一步说明:

  1. 编辑/etc/default/ntp并确保它有NTPD_OPTS='-g'
  2. 重新启动ntp服务:sudo service ntp restart
  3. 享受精准时间

我怀着应有的尊重和真诚的愿望说这些话,希望能帮到您:看来您是 Linux 管理方面的新手,对 ntpd 一点都不熟悉。因此,我强烈建议您重新考虑一下为什么您只希望 ntpd 设置一次时钟然后退出。这远非最佳实践。根据我的经验,如果我认为我需要做一些与最佳实践相反的事情,我会确保我的情况与世界其他地方截然不同。一旦您正确设置了 ntpd,它就会规范您的时钟,您永远不需要担心它。如果您进行一次性交易,您的时钟将慢慢偏离 UTC。

相关内容