web-dev-qa-db-ja.com

TAI時間で実行するようにUnixシステムを構成するにはどうすればよいですか?

2016-12-31 23:59:60として適切に報告された年末のうるう秒を確認できるように、Unixシステムを 国際原子時 (TAI)で実行するように構成したいと思います。これにより、システムのタイムスタンプがPOSIXのタイムスタンプと互換性がなくなることはわかっていますが、これは実験として行っています。タイムゾーンファイルを/usr/share/zoneinfo/right/から/etc/localtimeにコピーしました。これらは私の質問です。

  • システムの時刻を正確に設定するにはどうすればよいですか? UTC秒ではなくTAI秒に設定する必要があることを理解しています。 NTPを介してこれを行うことは可能ですか?現在、システムは正しい時間から36秒離れた時間を表示します。
  • 2017-02-01以降も表示時刻は正しいですか? zoneinfo/rightタイムゾーンファイルを更新する必要がありますか?
4

タイムゾーンファイルの更新が必要になる場合があります。コマンドを実行して、インストールされているタイムゾーンファイルの遷移を確認することでテストできます。次の例には、うるう秒の遷移が含まれています。

$ zdump -c 2017,2018 -v /etc/localtime /etc/localtime -9223372036854775808 = NULL /etc/localtime -9223372036854689408 = NULL /etc/localtime Sat Dec 31 23:59:60 2016 UT = Sun Jan 1 01:59:60 2017 EET isdst=0 gmtoff=7200 /etc/localtime Sun Jan 1 00:00:00 2017 UT = Sun Jan 1 02:00:00 2017 EET isdst=0 gmtoff=7200 /etc/localtime Sun Mar 26 00:59:59 2017 UT = Sun Mar 26 02:59:59 2017 EET isdst=0 gmtoff=7200 /etc/localtime Sun Mar 26 01:00:00 2017 UT = Sun Mar 26 04:00:00 2017 EEST isdst=1 gmtoff=10800 /etc/localtime Sun Oct 29 00:59:59 2017 UT = Sun Oct 29 03:59:59 2017 EEST isdst=1 gmtoff=10800 /etc/localtime Sun Oct 29 01:00:00 2017 UT = Sun Oct 29 03:00:00 2017 EET isdst=0 gmtoff=7200 /etc/localtime 9223372036854689407 = NULL /etc/localtime 9223372036854775807 = NULL

タイムゾーンファイルを更新する必要があり、オペレーティングシステムディストリビューションからうるう秒(/ right)タイムゾーンファイルが提供されていない場合は、次のようにタイムゾーンファイルを設定できます。

  • https://www.iana.org/time-zones からタイムゾーン分布を取得します。
  • 構成してインストールし、
  • 次のようなコマンドを使用して、正しいゾーンファイル(うるう秒の情報も含まれます)を設定します

Sudo cptzdir/etc/zoneinfo-leaps/your-timezone/etc/localtime

NTPサーバーから時刻を設定するには、rdate(openrdate)を構成してインストールしてから、Sudo rdate -s -c -n 0.gentoo.pool.ntp.orgなどのコマンドを実行します。

0

まず、コンピュータシステムのクロックにTAIまたはUTCを提供する必要があるという概念は、厳密には正確ではありません。タイムゾーンを使用して時刻を取得および設定できます。たとえば、GNU coreutilsdateコマンドは非常に柔軟です。right/ UTCに設定されたシステムの場合(これについては後で詳しく説明します):

# date -s "Tue Dec 27 08:16:53 CST 2016"
Tue Dec 27 14:16:53 UTC 2016

関連する実際のデータ構造といくつかの優れた参考資料については、ESRのエッセイ Cでの時間、時計、およびカレンダープログラミング を参照してください。

それでも、ntp、ptpを構成するか、通常どおりタイミングの良いdateまたはchronyc settimeコマンドを発行できます。

ただし、TAI-UTCオフセットとソース時刻を理解する必要があります。 NTP時刻は標準UTCであるため、UTC同期システムで「正しい」ゾーンを設定するだけでTAI-10 --UTC(現在は26)によってオフになります。

代わりに、一部のNTPサーバーはGPSまたはTAIを提供できます。これに加えて、うるう秒のハックによって、カーネルまたはユーザーのうるう秒の同期によって修正されたうるう秒のエラーが取り除かれます。参照: 「正しい」tzデータベース(zoneinfo)ファイルとGPSベースのNTP

86401の2日目は非標準であり、POSIXがおそらく必要とするものに反することに注意してください。これを行うNTPサーバーを設定すると、他のシステムに時間を提供できなくなります。また、特定の形式の時間に依存するアプリケーションから奇妙な動作が発生する可能性があります。

TZデータを更新する必要があります。年に2回、うるう秒が発生します。この理由でうるう秒にパッチを適用する場合は、再度パッチを適用する必要があります。 (さまざまな理由で、これよりも頻繁に他のソフトウェアを更新する必要がある可能性が非常に高いです。)うるう秒が追加されます。地球の自転の変化は物理的に必要です。また、技術的な理由が少ないため、タイムゾーンと夏時間の変更の可能性が政治的に必要です。

次のうるう秒は 2016年12月31日23時間59分60秒 なので、良いタイミングです。
Red Hatは、UTCを使用している場合にLinuxでそれを処理する方法の優れた要約を公開しました。多くのサイトが繰り返し、塗りつぶし、またはNTP 61秒を表示せずにエラーの2番目を修正します。 Red Hat Enterprise Linuxのうるう秒の問題を解決します

これはすべて私には大変な作業のように思えます。 Red Hatが説明する方法を使用して、NTPまたはカーネルに処理させることができれば、61秒は表示されません。

2
John Mahowald