根据您提供的日志信息,leapsecond file /usr/share/zoneinfo/leap-seconds.list 已经过期。这个文件用于 ntpd 来调整时间,以便在闰秒发生时能够正确处理。

要解决这个问题,您可以尝试以下几种方法:

  1. 更新 tzdata 包:
    在 Ubuntu 或类似的 Linux 发行版中,可以通过更新 tzdata 包来更新 leap-seconds.list 文件。您可以使用以下命令来更新:
    sudo apt-get update
    sudo apt-get install tzdata

    更新后,检查 /usr/share/zoneinfo/leap-seconds.list 文件的到期日期,确保它已经更新到一个未来的日期。

  2. 手动更新 leap-seconds.list 文件:
    您可以使用 update-leap 工具来手动更新 leap-seconds.list 文件。首先,确保您有必要的依赖项,然后运行:
    sudo update-leap

    如果遇到依赖问题,可能需要安装 Net::SSLeay 模块。

  3. 使用 ntpleapfetch 工具:
    这个工具可以验证并更新 leap-seconds.list 文件。您可以使用以下命令:
    sudo ntpleapfetch

    这个工具会检查当前文件的有效性,并在需要时下载并安装新的文件

报错:

update-leap
No leapfile directive in /etc/ntp.conf; leapfile location not known

update-leap 命令提示没有在 /etc/ntp.conf 中找到 leapfile 指令,因此无法确定闰秒文件的位置。要解决这个问题,您需要在 ntp.conf 文件中添加 leapfile 指令,并指定闰秒文件的路径。
以下是具体步骤:

  1. 编辑 ntp.conf 文件:
    打开 /etc/ntp.conf 文件进行编辑:
    sudo nano /etc/ntp.conf

    在文件中添加以下行,指定闰秒文件的路径(例如将其放在 /var/lib/ntp/ 目录下):

    leapfile /var/lib/ntp/leap-seconds.list

    保存并关闭文件。

  2. 下载闰秒文件:
    确保闰秒文件存在于指定的路径。您可以从 IETF 或其他可信源下载最新的 leap-seconds.list 文件:
    sudo wget -O /var/lib/ntp/leap-seconds.list https://data.iana.org/time-zones/data/leap-seconds.list
  3. 重启 NTP 服务:
    保存配置更改后,重启 ntpd 服务以应用新的配置:
    sudo systemctl restart ntp
  4. 验证配置:
    使用 ntptime 命令检查当前的闰秒信息:
    ntptime

    确保输出中显示了正确的闰秒信息。
    通过以上步骤,您应该能够解决 leapfile 指令缺失的问题,并确保 ntpd 正常处理闰秒信息。