システム起動中のNTPシステム時間が正しいことを確認する方法

システム起動中のNTPシステム時間が正しいことを確認する方法

リアルタイムの温度を記録するために使用するRaspbian(Debian派生製品)を実行するRaspberry Piがあります。その一環として、数秒まで正確な時計が必要です。サーバーが起動すると、通常の動作中にRaspberry Piがネットワークを介して定期的にNTPサーバーに接続し、ローカルクロックが正しい時間に合理的に近いことがわかります。この精度は私のアプリケーションには十分です。 Raspberry Piには、サーバーがシャットダウンしたり電源を切ったりする時間を維持するバッテリ駆動の時計がないため、インターネット接続が確立され、NTPを介して正確な時間が得られるまで、最初の起動時にシステム時間が正しくありません。

私が見つけた問題の1つは、停電が発生すると、Raspberry Piが電源なしでしばらくシャットダウンしてから(30分後に)再びオンになることです。 Piが起動し、私のアプリケーションが起動し、温度の再記録を開始しますが、Piの時計が正しくないため、記録された温度のタイムスタンプが正しくありません。どういうわけか最後の既知の時間を保存し、そこから始まるようです(再起動時にエポック時間にリセットされません)。結局のところ、Piが接続されたLANが再び機能し、インターネット接続が再確立されると、Piは(NTP経由で)時間を変更しますが、それまでに記録したタイムスタンプは不正確です。

この問題を解決するための最善の措置が何であるかを知りたいです。

私はメンテナンス上の理由でバッテリーとして動作する追加の時計を追加しません。これは基本的に組み込みデバイスであり、ユーザーが簡単にアクセスできないため、バッテリーを交換する必要はありません。

ネットワークで時間が正確に検出されたことがわかるまで、アプリケーションは温度記録を延期することを望んでいますが、その状態を検出する方法さえわかりません。 NTPサーバーで時間が更新され、現在正しいことを知る方法を知っている人はいますか?

私のアプリケーションは起動時にスクリプトを実行して起動します。

この問題を解決する方法についての他のアイデアはありますか?

ベストアンサー1

ラズベリーパイを再起動するたびに(数秒かかります)、時間を増減することで時計が2回以上オフになりますntp(たとえば、回転、これは例えばリアルタイム時計のためにわずかに外れたものだけを修正するためにのみ機能します)オフになっている場合(秒ほど遅いか速いので)、ntp時計を設定する必要があります。

ntpdateしたがって、最も簡単な方法は、取得された値の距離に基づいて日付またはロールバックを設定するスクリプト、または同等の機能を使用して温度測定プログラムの最初の呼び出しを開始することです。ntpdateしたがって、時計が既に修正に近い値に設定されている場合、たとえば再起動せずにこのスクリプトを介して再ntp起動すると問題は発生しません。

おすすめ記事