如何以编程方式检查 systemd-timesyncd 是否已成功同步

如何以编程方式检查 systemd-timesyncd 是否已成功同步

是否可以通过编程知道 systemd-timesyncd;

  • 可以访问 NTP 服务器吗?
  • 系统时间已经和服务器同步了吗?

原因是我有一个应用程序依赖于精确的时间信息,并且必须在系统时间更新后启动。或者有没有不使用 systemd 的其他方法?

谢谢。

答案1

由此关联(systemd-timesyncd.service 手册页):

/var/lib/systemd/timesync/clock

该文件的修改时间(“mtime”)表示上次成功同步的时间戳(或至少是 systemd 构建日期,以防无法同步)。它用于确保系统时钟在重新启动后保持大致单调,以防没有本地 RTC 可用。

/运行/systemd/timesync/synchronized

每次成功同步时都会触及的文件,以协助 systemd-time-wait-sync 和其他应用程序检测与准确参考时钟的同步。

答案2

 systemctl status systemd-timesyncd
 * systemd-timesyncd.service - Network Time Synchronization
   Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2019-10-25 11:36:40 CEST; 52min ago
     Docs: man:systemd-timesyncd.service(8)
 Main PID: 881 (systemd-timesyn)
   Status: "Synchronized to time server 91.189.91.157:123 (ntp.ubuntu.com)."
    Tasks: 2 (limit: 4915)
   CGroup: /system.slice/systemd-timesyncd.service
           `-881 /lib/systemd/systemd-timesyncd

Oct 25 11:36:40 computername systemd[1]: Starting Network Time Synchronization...
Oct 25 11:36:40 computername systemd[1]: Started Network Time Synchronization.
Oct 25 11:37:11 Computername systemd-timesyncd[881]: Synchronized to time server 91.189.91.157:123 (ntp.ubuntu.com).

相关内容