私のMacが時計を正しく更新し続けているかどうかどうすればわかりますか?


26

Date& Dで自動時刻同期を有効にしたときに時計を調整し続けるという観点から、OS Xのデフォルト設定が何であるかを知りたいです。時間の好み

私は由緒あることを知っていますか ntpd Mavericks(10.9)とYosemite(10.10)のデーモンはもはや時間を調整する責任を負わず、代わりに新しいプログラム pacemaker 導入されました - それでは、物事が機能していること、または時間を保つために調整が必要であることをどのようにして知ることができますか?

回答:


40

10.14モハーベ

Mojaveはまだ使用しています timedしかし、 ntpdate 削除されました。システム時刻を確認して更新するには、次の電話をかけることができます。 sntp 直接。

$ sudo sntp -sS pool.ntp.org
Password:
sntp 4.2.8p10@1.3728-o Tue Mar 21 14:36:42 UTC 2017 (136.200.1~2533)
2018-09-29 19:42:41.448103 (-0200) +1087.742403 +/- 725.183462 pool.ntp.org 188.68.36.203 s2 no-leap

このエラーが発生した場合

kod_init_kod_db(): Cannot open KoD db file /var/db/ntp-kod: No such file or directory

試してみてください。

sudo touch /var/db/ntp-kod
sudo chmod 666 /var/db/ntp-kod

10.13高シエラ

ハイシエラの用途 timedから、 /usr/libexec/timedシステムユーザーによって実行されます。 _timed

NTPなどのテクノロジを介してクロックを基準クロックと同期させることで、システムクロックの精度を維持します。入力は時間内でマージされ、プロアクティブタイムジョブのスケジューリングを容易にするために不確実性が計算されます。時限はまた電源/電池の状態を知っています。

時限はLaunchDaemonによって管理されます /System/Library/LaunchDaemons/com.apple.timed.plist。時限走行…

  • 起動時にデーモンがロードされたとき(RunAtLoad:true)
  • 3600秒ごと(StartInterval:3600)
  • 機内モードが無効の場合(com.apple.systemconfiguration機内モードが変更されました:com.apple.radios.plist AirplaneMode false、これはiOSから引き継がれるように見えます)

あなたはあなたの時計がどのくらい「オフ」であるかを見ることができます。 /var/db/timed/com.apple.timed.plistTMTimeErrorキーおよびTMScaleFactorErrorキーのTMLastSystemTimeディクショナリの下にあります。

$ sudo defaults read /var/db/timed/com.apple.timed TMLastSystemTime
{
    TMCurrentTime = "537303485.281592";
    TMReliability = 1;
    TMRtcTime = "351422.381868388";
    TMScaleFactor = "0.9999958233107684";
    TMScaleFactorError = "3.468751755688052e-05";
    TMSource = TMTimeSynthesizer;
    TMTimeError = "0.6127951619022057";
}

Xcode screenshot of mentioned plist

timedはで設定されたタイムサーバーを使用します。 /etc/ntp.confこれはデフォルトでは

server time.apple.com

timedはTMTimeSynthesizerも使用します。これはiOSのCoreTimeで時計の更新に使用されるものですが、私はmacOSの歴史については知りません。

timed Sources

manページに記載されているように、自分でタイミングバイナリーを実行しないでください。

timedは引数を取らないので、ユーザーは手動で起動しないでください。

投稿内のApple Developer Forumsユーザーgranada29によると 10.13のntpd、timed、およびchronyd 、timedは以下を実行します。

timedは単純なsntpクライアントであるように見えます - すなわちそれは定期的に(15分)NTPをポーリングし、システムクロックを設定するためにsettimeofday()システムコールを使用します。私はそれが時計を逆方向に動かさないようにするためにいくらか巧妙さを持っていると思います、しかし言う方法がありません。

10.11エルキャピタンから10.12シエラ

pacemaker macOSの時間管理を担当するデーモンです。それは使用しています adjtime の内容ごとに時計を調整する /var/db/ntp.drift

あなたはあなたの時計がどのくらい「オフ」であるかを見ることができます。 ntp.drift - たとえば、私のファイルには次のものが含まれています。

-23.640

これは、クロックが本来の時刻から-23.64 PPM離れていることを意味します。この数の単位はPPM、または100万分の1です。 1 PPMは1マイクロ秒/秒、つまり3.6ms / hです。

あなたは実行することで時計の更新をより頻繁にすることができます pacemaker とともに -a 時間移動の間に待機する時間を秒単位で指定するオプション

/usr/libexec/pacemaker -a 10

OS Xがペースメーカー用に使用しているパラメータを見るには /System/Library/LaunchDaemons/com.apple.pacemaker.plist

{
    KeepAlive = { PathState = { "/private/var/db/ntp.drift" = :true; }; };
    Label = "com.apple.pacemaker";
    ProgramArguments = ( "/usr/libexec/pacemaker", "-b", "-e", "0.0001", "-a", "10" );
}

現在の設定を見つけるには、 -i オプション:

/usr/libexec/pacemaker -i
Jan 19 18:20:08 g pacemaker[12544] <Info>: --- settings for external power ---
Jan 19 18:20:08 g pacemaker[12544] <Info>: interval = 1 seconds, tolerance = 0.000000, drift = -23.640000
Jan 19 18:20:08 g pacemaker[12544] <Info>: --- settings for internal power ---
Jan 19 18:20:08 g pacemaker[12544] <Info>: interval = 1 seconds, tolerance = 0.000024, drift = -23.640000

あなたが実行してログを表示することができます -v オプション:

sudo /usr/libexec/pacemaker -v
Password:
Jan 19 18:23:17 g pacemaker[13202] <Info>: power status check: using external power
Jan 19 18:23:17 g pacemaker[13202] <Info>: created file monitor for /var/db/ntp.drift
Jan 19 18:23:17 g pacemaker[13202] <Info>: interval = 1 seconds, tolerance = 0.000000, drift = -23.640000
Jan 19 18:23:19 g pacemaker[13202] <Debug>: drift -23.640000 residue 0.000000 delta -23
Jan 19 18:23:20 g pacemaker[13202] <Debug>: drift -23.640000 residue -0.640000 delta -24
Jan 19 18:23:21 g pacemaker[13202] <Debug>: drift -23.640000 residue -0.280000 delta -23
Jan 19 18:23:22 g pacemaker[13202] <Debug>: drift -23.640000 residue -0.920000 delta -24
Jan 19 18:23:23 g pacemaker[13202] <Debug>: drift -23.640000 residue -0.560000 delta -24
Jan 19 18:23:24 g pacemaker[13202] <Debug>: drift -23.640000 residue -0.200000 delta -23
⌃C%

[修正?]ドリフトファイルには、時間ではなく、クロック周波数のPPMの誤差が含まれていると思います。

ペースメーカーはまだどこかにNTPタイムサーバーのドリフトをチェックする必要があります。 Appleのペースメーカーのmanページによると、ドリフトを計算するために「普通に」ntpdを使います。そのため、/etc/ntp.conf内の単一のデフォルトサーバーに少なくとも2つ以上のタイムサーバーを追加することにします。 (1つだけが単一障害点で、2つがntpdを混乱させ、3つ以上を指定すると、ntpdはより良い判断を下すことができます。)
iainH

5

最初のステップはあなたの時間が設定されているかどうかを確認することです。

Mac:~ me$ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*time.apple.com  17.168.198.149   2 u 1046  512   37   58.475    9.477   3.674

遅延/オフセット/ジッタの値が100未満であると仮定して(時間精度がそれほど厳しくないシステムでは、通常の遅延は1000未満になる可能性があります)、端末で実行する次のコマンドは次のとおりです。 ntpq あなたからのタイムサーバーが続きます ntpq そしてシステムの好み。ミリ秒の差異の時間を修正して現在のハードウェアクロックが標準時間からどのようにずれているかを計算するときに、タイムキーピングシステムはタイムサーバーからの応答が近くて速いのが好ましい。

Mac:~ me$ ntpdate -q time.apple.com
server 17.151.16.12, stratum 2, offset 0.081698, delay 0.11237
server 17.151.16.20, stratum 2, offset 0.081365, delay 0.11310
server 17.151.16.21, stratum 2, offset 0.082754, delay 0.11440
server 17.151.16.22, stratum 2, offset 0.081750, delay 0.11264
server 17.151.16.23, stratum 2, offset 0.082691, delay 0.11415
server 17.151.16.38, stratum 2, offset 0.082077, delay 0.11458
server 17.171.4.13, stratum 2, offset 0.084822, delay 0.08054
server 17.171.4.14, stratum 2, offset 0.083749, delay 0.08142
server 17.171.4.15, stratum 2, offset 0.086343, delay 0.07605
server 17.171.4.33, stratum 2, offset 0.086526, delay 0.07690
server 17.171.4.34, stratum 2, offset 0.084500, delay 0.07997
server 17.171.4.35, stratum 2, offset 0.083987, delay 0.08278
server 17.171.4.36, stratum 2, offset 0.084382, delay 0.08028
server 17.171.4.37, stratum 2, offset 0.085948, delay 0.07831
server 17.151.16.14, stratum 2, offset 0.082043, delay 0.11270
19 Jan 12:09:32 ntpdate[4592]: adjust time server 17.171.4.15 offset 0.086343 sec
Mac:~ me$ ntpq
ntpq> assoc

ind assid status  conf reach auth condition  last_event cnt
===========================================================
  1 57788  9014   yes   yes  none    reject   reachable  1
ntpq> peer
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 time.apple.com  17.168.198.148   2 u  729  512    1  133.274   51.653 371.362
ntpq> q

次に確認することはあなたのペースメーカープログラムです:

Mac:~ me$ ps -ef|grep [p]acemaker
0    76     1   0 Fri08AM ??         0:03.64 /usr/libexec/pacemaker -b -e 0.0001 -a 10

これは、バッテリでは調整間隔が10秒に1回以下で、クロック誤差が0.1ミリ秒未満であれば調整間隔がさらに短くなることを示しています。

オフセットが数秒以上であることがわかった場合は、使用するタイムサーバーを変更するか、ペースメーカで使用する値を変更してエネルギーとCPUを増やす必要がありますが、Appleの設定と引き換えに時計を合わせる10.9で出荷されました。


3

に行くなら http://time.gov あなたは公式の時間(最大2秒まで)を見て、それを使ってあなたのシステムの時間が正しいかどうかを確かめることができます。これは公式のNIST時間であり、システム時間とは無関係に、ブラウザ内で独自の同期を実行することに注意してください(例として、 ここに time.govはうるう秒を処理しますが、OS Xは明らかに処理しません)。


これが私の「時計を同期させておく」という選択にどのように影響するかを詳しく説明してもらえますか。
bmike

1
問題は、「自分のMacで時計が正しく更新されているかどうか、どうすればわかりますか」ということです。 「公式の時間を見ても」あなたの質問に答えない場合は、おそらくそれを言い換えるべきです。
asmeurer

time.govに関しては、 公式 NIST時間は、あなたがページにアクセスしたときにブラウザで独自の同期を行います。 「Apple Watchをチェックする」と言うことは、あなたのOS Xのシステムクロックがデフォルトですでに同期されていることを伝えることと同じです(これは本当ですが、実際には質問に答えていません)。これはApple Watchよりもはるかに安いです、そしてApple WatchはデジタルセカンドディスプレイAFAIKを持っていません。
asmeurer

私の考えは、時計はより正確で正確な時間を保つためにより多くの技術を持っているということでした。 Macの時計は、非常に正確かつ過少なことで有名です。私が知っているどのコンピュータにも同じことが言えます - 正確さは計時には難しいです。 Web機能の詳細な説明については+1。 (たとえそれが答えの本体に入っていなくても)
bmike

3

High Sierra以降、ntpdシステムデーモンは、/ usr / libexec / timedを呼び出すtimedシステムデーモンに置き換えられました。

私が詳細を知るために私が見つけた最高の執行役は systemsetup さまざまなフラグを付けて(rootとして実行)

[-getusingnetworktime] [-setusingnetworktime on | off]
[-getnetworktimeserver] [-setnetworktimeserver timeserver]

結果の出力は、はるかに冗長(=退屈)です。 ∂T/ドリフトの詳細はありません。

どうやら 時限 システムプリファレンス/ ntp.confファイルに複数のntp-serverが入力されている場合でも、1つのntp-server(最初にリストされたもの - WireShark / LittleSnitchで確認済み)を使用します。

さらに読む(あまり技術的ではない): 誰か時間がありますか? High Sierraによる時刻同期の変更


従来のntpdデーモンはまだ存在していますが、アンロードされています。 Terminal.appを入力してもロードできます。

sudo launchctl load [-F|-w] /System/Library/LaunchDaemons/org.ntp.ntpd-legacy.plist

SIP無効モード入り ntpq -p それから再び働きます。

デーモンをSIP対応モードでロードするには、ファイルを/ Library / LaunchDaemons /にコピーします。

sudo cp /System/Library/LaunchDaemons/org.ntp.ntpd-legacy.plist /Library/LaunchDaemons/org.ntp.ntpd.plist

nanoまたは他のエディタでorg.ntp.ntpd-legacyからorg.ntp.ntpdにplistのラベルを変更します。

sudo nano /Library/LaunchDaemons/org.ntp.ntpd.plist

デーモンをロードします。

sudo launchctl load -w /Library/LaunchDaemons/org.ntp.ntpd.plist

デフォルトのHigh Sierraデーモンを使用して時間の詳細を取得するための優れたexecを見つけた場合、答えは更新されます。


1
High Sierraを使用する場合、古いntpdを有効にするためのヒントは、/System/Library/LaunchDaemons/org.ntp.ntpd-legacy.plistが無効になっており、SIPで "セキュリティ保護されている"ため、お勧めできません。それで、あなたがそれをロードしたくないならば、あなたは最初にSIPを無効にしなければなりません。 (/ usr / bin / csrutil disable)
Juergen Braendle

0

あなたの時計がどのくらいうまく設定されているかについて信頼できる答えを得るために、デバッグモードでntpdateを実行してください:

ntpdate -d pool.ntp.org

これはしばらくの間旋回し、次のような行に終わります。

 1 Apr 17:38:16 ntpdate[4711]: adjust time server 123.45.67.89 offset 0.000810 sec

この場合、これは私のローカルクロックが約810 µsオフになっていたことを意味していました(実際には、これは壮観ですが、100 msをかなり下回る値は同期が機能していることを示します)。


0

クロック同期をチェックするには、実行することを提案する答えと同じです ntpdate デバッグモードでは、冗長出力を少なくするためにクエリモードで実行することもできます。

$ ntpdate -q pool.ntp.org
server 85.199.214.102, stratum 1, offset 0.006256, delay 0.05470
server 95.215.175.2, stratum 3, offset 0.005234, delay 0.05624
server 217.114.59.3, stratum 2, offset 0.007166, delay 0.06274
server 85.199.214.100, stratum 1, offset 0.006319, delay 0.05396
22 Jun 09:20:55 ntpdate[84112]: adjust time server 85.199.214.100 offset 0.006319 sec
$

これは、High Sierra 10.13.2を実行している私のMacのものです。 timed NTPデーモンではなく( ntpdate NTPデーモンを使用していないので、まだ動作します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.