以编程方式更新 Linux 系统时间

以编程方式更新 Linux 系统时间

我有一个由 3 或 4 个不同的 Linux Ubuntu 机器组成的系统,我希望它们能够进行时间同步。我的计划是使用其中一台(我们称之为主机)作为 NTP 服务器,为其他 3 台机器(我们称之为子机)提供时间。

但是,我想首先从主机获取 UTC 时间,并且使用在线服务器不是一个选项(没有互联网)。

我目前正在通过 C++ 从车载 GPS 设备读取 UTC 时间。是否可以使用 C++ 和 GPS 提供的 UTC 时间设置此处理器上的系统时间,然后使用 NTP 将此时间同步到所有其他子 PC?

答案1

一个简单的方法是使用 date 命令

date -s @<seconds-since-1970>

如果您想在 C++ 中执行此操作,请参阅man settimeofday

答案2

是的,这不仅是可能的,而且相对简单。有几个可用的“go-bys”和教程参考文献 1,参考文献 2这将向您展示如何执行此操作。

其他一些想法:

  1. 考虑使用chronyd代替ntpd开放NTPd也将是一个不错的选择,除了它忽略了这一事实闰秒...但如果您不关心这一点,那么使用和管理起来很简单。

  2. 不同接收器的 GPS 时间精度可能会略有不同。

相关内容