このサイトには同様の質問はありません。 、manpage
方法を説明するのに役立ちますが、使用 date
、背景情報はあまりありません。ページinfo
(マンページで指定されています:)でも、変数に基づいて動作するinfo '(coreutils) date invocation'
方法にすぎません。TZ
date
コマンドラインユーティリティがどのように機能するかを知りたいです。具体的には、
date +%s
エポック以降の秒数を返します1467743297
(例1970-01-01 00:00:00 UTC
:)。
たとえば、インターネット接続は必要ないと思います。それではまたそうですか?時々特定のソースと再同期しようとしていますか?では、このソースはどのように指定されますか?そうでなければ、特定のマシンで日付別に報告された値についてどのくらい確信できますか?
セクション21.1.5このinfo
ページはdate
システム/ソフトウェアクロックのみを扱い、それとの同期はhwclock
OSによって異なります。だから...おそらく、この質問はより適切なようです。「どのシステムがより正確に報告しますかdate +%s
?」date
これは、精度がシステムハードウェアクロックの精度に制限され、特にシステム/ソフトウェアクロックの影響を受けることを意味するとも考えられます。 (たとえば、高精度のハードウェア時計を使用しても、ソフトウェア時計が精度を妨げる可能性があります。)
答え1
date
何も同期しようとせずに、strace date ...
システムに知られているエイリアスの後の時間を見つけるために、いくつかのシステムコール(Linuxに表示または表示されない場合があります)のみを実行します。
システム自体はBIOSクロックと同期できます。あるいは、仮想マシンは、実行中の親マシンから現在時刻を取得できます。あるいは、rdate
NTP(またはほぼ同じ機能を持つ他のソフトウェア、レガシーまたは精密時間プロトコル(PTP)を使用)またはハードウェアGPSまたはラジオを使用して時間を設定できます。date
管理者がBBCラジオを聞いてdate
システム時間を時間どおりに手動で設定しない限り(まだ時間どおりにdoot doot doot deeをしていますか?)、これらのどれも関係ありません。
システムクロックの精度は、NTP設定(または使用されている他のソフトウェア)、NTP(または同様のソフトウェア)が破損しているか、BIOSが破損しているか(4年後にシステムが起動するのを見たことがあります。サーバーですMakefile
...)、ハードウェアクロックが誤動作しているかどうか、その他のさまざまな詳細。 NTPを使用している場合は、peers
コマンドntpq
またはドリフトファイルを確認する価値があります。
最も正確な時間を得るために(除外各ホストに原子時計を配置する...) 読んでみたいかもしれないPTP「より高い精度に向けて」(また学んだ。時間は幻想です)。
答え2
date
インターネット接続が必要ないという仮定は正しいです。単にシステムクロックに保存されている現在時刻を出力します。 (詳細は時刻と日付のコマンド)
ハードウェア時計は、システムの電源が切れたときやプラグが抜かれたときに現在の時間を維持するマザーボードのバッテリ駆動回路です。
システムが起動すると、カーネルはハードウェア時間を抽出し、システム(ソフトウェア)クロックを設定します。これは、低電力ハードウェアクロックよりもはるかに正確なプロセッサクロックで実行されます。 (もっとここ)
ハードウェアとソフトウェアのクロックはコマンドhwclock --systohc
に従って同期できますが、互いに独立して実行されます。hwclock --hctosys
ソフトウェアクロックは通常、システムがシャットダウンするとハードウェアクロックに記録されます。
外部タイミング機関と同期するには、rdate
ワンタイム同期を使用するか、継続的な更新のためにntpユーティリティを設定します。また、ntpデーモンはインターネットソースのシステムクロックのドリフトを計算し、インターネット接続が失われてもそれを修正します。