web-dev-qa-db-ja.com

Linuxシステム時刻をプログラムで更新する

時間同期したい3つまたは4つの異なるLinuxUbuntuマシンのシステムがあります。私の計画では、そのうちの1つ(マスターと呼びましょう)をNTPサーバーとして他の3台のマシンに時間を提供します(子と呼びましょう)。

ただし、最初にマスターからUTC時刻を取得したいので、オンラインサーバーを使用することはできません(インターネットがありません)。

現在、C++を介してオンボードGPSデバイスからUTC時刻を読み取っています。 C++とGPSによって提供されるUTC時間を使用してこのプロセッサのシステム時刻を設定し、NTPを使用してこの時刻を他のすべての子PCと同期することは可能ですか?

2
Frank

はい、それは可能であるだけでなく、比較的簡単です。いくつかの「ゴーバイ」とチュートリアルが利用可能です ref 1ref 2 これを行う方法を示します。

他のいくつかの考え:

  1. chronydの代わりに ntpd を使用することを検討してください。 OpenNTPd も無視するという事実を除いて、良い選択です うるう秒 ...しかし、それを気にしないのであれば、使用と管理は簡単です。 。

  2. gPS時間の精度は、受信機ごとに少し異なる場合があります。

1
Seamus

簡単な方法は、dateコマンドを使用することです

date -s @<seconds-since-1970>

C++で実行する場合は、man settimeofdayを参照してください。

1
RalfFriedl