Mac'imin saatin doğru bir şekilde güncel tutulup tutulmadığını nasıl anlarım?


45

Tarih ve Saat tercihinde otomatik zaman senkronizasyonunu etkinleştirdiğimde, saati ayarlamak için OS X için varsayılan ayarların ne olduğunu bilmek istiyorum.

ntpdMavericks (10.9) ve Yosemite (10.10) üzerindeki saygıdeğer daemonun zamanı düzeltmekten artık sorumlu olmadığını ve bunun yerine yeni bir programın kullanıldığını pacemakerbiliyorum - peki işlerin zaman geçirmek için gerekli olduğunu veya düzeltilmesi gerektiğini nasıl bilebilirim?

Yanıtlar:


71

10.14 Mojave

Mojave hala kullanıyor timed, ancak ntpdateyardımcılar ntpqkaldırılıyor. Sistem saatinizi kontrol etmek ve güncellemek için sntpdoğrudan arayabilirsiniz .

$ 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

Kutunun dışında, bir izleme dosyası eksik, bu yüzden zaman kontrol ederken bu zararsız hatayı alırsanız:

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

hatayı yoksayın veya bu boş dosyayı oluşturmayı deneyin:

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

10.13 Yüksek Sierra

High Sierra kullanır timeddan, /usr/libexec/timedsistem kullanıcı tarafından çalıştırılan, _timed.

Timed, saati NTP gibi teknolojilerle referans saatler ile senkronize ederek sistem saati doğruluğunu korur. Girdiler, proaktif zaman işlerinin programlanmasını kolaylaştırmak için belirsizliği hesapladığı zaman içerisinde birleştirilir. Zamanlı da güç / pil koşullarının farkında.

zamanlanmış LaunchDaemon tarafından yönetilmektedir /System/Library/LaunchDaemons/com.apple.timed.plist. zamanlı koşular…

  • arka plan açılışında yüklendiğinde (RunAtLoad: true)
  • her 3600 saniyede bir (StartInterval: 3600)
  • Uçak Modu devre dışı bırakıldığında (com.apple.systemconfiguration uçak modu değişti: com.apple.radios.plist iOS'tan taşınıyor gibi görünen AirplaneMode false)

/var/db/timed/com.apple.timed.plistSaatinizin ne kadar kapalı olduğunu TMTimeError ve TMScaleFactorError anahtarlarındaki TMLastSystemTime sözlüğünün içeriğine bakarak görebilirsiniz.

$ 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";
}

Bahsedilen plistin Xcode ekran görüntüsü

zamanlamalı, /etc/ntp.confvarsayılan olarak ayarlanan zaman sunucusunu kullanır.

server time.apple.com

timed ayrıca iOS'ta CoreTime'ın saati güncellemek için kullandığı bir şey olan TMTimeSynthesizer'ı kullanıyor, ancak macOS'taki geçmişinin farkında değilim:

zamanlanmış kaynaklar

Zamanlanmış ikili dosyayı kendiniz çalıştırmayın, man sayfasında belirtildiği gibi:

zaman aşımı hiçbir argüman almaz ve kullanıcılar manuel olarak başlatmamalıdır.

Apple Developer Forums kullanıcısına göre, granada29 yazısında ntpd, timed ve chronyd 10.13'te, timed aşağıdakileri gerçekleştirir:

zamanlanmış basit bir sntp istemcisi gibi görünmektedir - yani NTP'yi düzenli aralıklarla (15 dakika) sorgular ve sistem saatini ayarlamak için settimeofday () sistem çağrısını kullanır. Saatin geriye doğru adım atmamak için biraz zekalı olduğunu varsayıyorum ama söylemenin bir yolu yok.

10.11 El Capitan'dan 10.12 Sierra

pacemakermacOS'ta zamanın yönetiminden sorumlu olan servistir. adjtimeİçeriği başına saati ayarlamak için kullanır /var/db/ntp.drift.

İçeriğinize bakarak saatinizin ne kadar kapalı olduğunu görebilirsiniz ntp.drift- örneğin, dosyam şunları içeriyor:

-23.640

Bu, saatin -23.64 PPM olması gerektiği zamandan uzakta olduğu anlamına gelir. Bu sayının birimleri PPM veya Milyon Başına Parçadır. 1 PPM, 1 mikrosaniye / saniye veya 3,6 ms / s'dir.

Bu seçenekle pacemakerçalışarak saatin daha sık güncellenmesini sağlayabilirsiniz, -azaman hareketleri arasında beklemek için saniye cinsinden bir zaman sağlar:

/usr/libexec/pacemaker -a 10

Kalp pili için OS X tarafından kullanılan parametreleri görmek için açın /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" );
}

Mevcut ayarlarınızı bulmak için şu -iseçenekle çalıştırın :

/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

-vSeçeneği çalıştırarak günlüğü gösterebilirsiniz :

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%

Mojave sistemim otomatik olarak senkronize olmaz, ancak sntpçalıştı. /var/db/ntp-kodHatanın otomatik senkronizasyonda sorunlara yol açıp açmadığını merak ediyorum - bir kaç ay içinde yeniden yaratmayı deneyip tekrar deneyiniz. =)
Ken Williams

5

Bu cevap sadece 10.12 Sierra ve altındakiler için geçerlidir.

Ayrıntılar referans için faydalı olabilir, ancak başka bir cevap daha yeni macOS zaman işleyişini mükemmel bir şekilde ele alıyor.


İlk adım, zamanınızın ayarlanıp ayarlanmadığını görmektir.

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

Gecikme / ofset / jitter değerlerinin 100'den az olduğunu varsayarsak (gecikme süresi normalde kritik olmayan sistemler için normal durumlarda gecikme 1000'den düşük olabilir), terminalde çalışacak bir sonraki komutu ntpqsiz ntpqve sistem tercihinizden takip edin. Zaman işleyiş sistemi, milisaniyelik farklar için zamanı düzeltirken ve mevcut donanım saatinin standart saatten nasıl uzaklaştığını hesaplarken zaman geciktirme sisteminin yakın, hızlı bir yanıt vermeyi sevdiğinden, gecikmeleri olup olmadığını görmek için diğer zaman sunucularını da test edebilirsiniz. .

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

Kontrol edilecek bir sonraki şey, kalp pili programınız:

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

Bu, pilde ayar aralığının her 10 saniyede bir defadan fazla olmadığını ve saat hatası 0,1 milisaniyeden azsa daha az ayar yapıldığını gösterir.

Ofsetinizin saniyeler veya daha fazla olduğunu fark ederseniz, daha fazla enerji ve CPU kullanmak için kalp pilinde kullanılan değerleri değiştirmek veya belki de kalp pilinde kullanılan değerleri değiştirmek isteyebilirsiniz, ancak Apple’ın ayarları 10.9 ile sevk edilir.


4

Eğer giderseniz http://time.gov sen (saniyede kadar) resmi süresini görebilir ve sistem saatinin doğru olup olmadığını doğrulamak için kullanabilirsiniz. Bunun resmi NIST zamanı olduğunu ve tarayıcıda sistem zamanından bağımsız olarak kendi senkronizasyonunu yaptığını unutmayın (bir örnek olarak, burada time.gov'un artık saniye işlediğini, ancak OS X'in görünmediği gibi olduğunu görebilirsiniz ).


Bunun, "saati senkronize tutmayı sürdürme" seçimimi nasıl etkilediğini anlatabilir misiniz? Sanırım bu, "Apple Watch'ınızı kontrol edin - ikinciye kadar doğru" kadar iyi bir cevap.
bmike

1
"Mac'imin saatimin doğru bir şekilde güncel tutulup tutulmadığını nasıl anlayabilirim?" "Resmi saate bakın" sorunuzu yanıtlamıyorsa, muhtemelen tekrar söylemelisiniz.
asmeurer,

Time.gov ile ilgili olarak, resmi NIST saatidir ve sayfayı ziyaret ettiğinizde tarayıcıda kendi senkronizasyonunu yapar. "Bir Apple Watch'ı kontrol et" demek sadece OS X sistem saatinizin zaten varsayılan olarak senkronize edildiğini söylemekle aynı olacaktır (bu doğru, ancak soruyu gerçekten cevaplamıyor). Bu aynı zamanda bir Apple Watch'tan çok daha ucuzdur ve Apple Watch'un AFAIK dijital ekranı yoktur.
asmeurer

Benim varsayımım, saatin hem doğru hem de kesin olması için daha fazla mühendisliğe sahip olmasıydı. Mac saatleri ünlü olarak kesin ve doğru. Aynı, farkında olduğum herhangi bir bilgisayar için de geçerli - doğruluk zaman işleyişi için zor. Web özelliklerinin ayrıntılı açıklaması için +1. (Cevabın gövdesinde olmasa bile)
bmike

4

Yüksek Sierra'dan başlayarak ntpd sistem arka plan programı / usr / libexec / zamana çağrı yapan zamanlanmış sistem arka plan programı ile değiştirildi.

Ayrıntıları almak için bulduğum en iyi yönetici systemsetup, çeşitli bayraklarıyla (root olarak çalıştırılır):

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

Sonuçta ortaya çıkan çıktı daha az ayrıntılıdır (= sıkıcı). Örneğin, ∂T / drift detayları yok.

Görünüşe göre zamanlanmış , sistem tercihleri ​​/ ntp.conf dosyasına birkaç kişi girilmiş olsa bile, yalnızca bir ntp sunucusu (ilk listelenen - WireShark / LittleSnitch ile kontrol edilen) kullanır.

Daha fazla okuma (çok teknik değil): Zamanı olan var mı? Yüksek Sierra zaman senkronizasyonunu nasıl değiştirdi?


Eski bir ntpd arka plan programı hala var ancak kaldırılıyor. Terminal.app 'a girerek de yüklenebilir:

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

SIP devre dışı modunda. Giriş ntpq -pdaha sonra tekrar çalışacaktır.

Daemon'u SIP etkin modda yüklemek için dosyayı / Library / LaunchDaemons / dizinine kopyalayın:

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

Pistin etiketini nano veya başka bir editörle org.ntp.ntpd-legacy'den org.ntp.ntpd olarak değiştirin:

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

Daemon yükleyin:

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

Varsayılan High Sierra daemonuyla zaman detaylarını elde etmek için daha iyi bir icra bulursam cevap güncellenecektir.


1
/System/Library/LaunchDaemons/org.ntp.ntpd-legacy.plist devre dışı bırakılmış ve SIP ile "güvenli" olduğundan, eski ntpd'yi etkinleştiren ipucu High Sierra kullanırken iyi bir seçenek değildir. Bu yüzden yüklemek istemiyorsanız, önce SIP'yi devre dışı bırakmanız gerekir. (/ usr / bin / csrutil devre dışı)
Juergen Braendle

2

Saatinizin ne kadar iyi ayarlandığına dair güvenilir bir cevap almak için ntpdate'i hata ayıklama modunda çalıştırın:

ntpdate -d pool.ntp.org

Bu bir süre için döner ve bu gibi bir çizgide sonlanır

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

Bu durumda, bu benim yerel saatimin 810 µs kapalı olduğunu söylemek anlamına geliyordu (bu gerçekten doğruysa muhteşem olurdu, ancak 100 ms'nin altındaki değer çalışma senkronizasyonunu gösteriyor).


1

Saat senkronizasyonunu kontrol etmek ntpdate, hata ayıklama modunda çalıştırılmasını öneren cevaba benzer şekilde daha az ayrıntılı çıktı için Sorgu modunda da çalıştırabilirsiniz.

$ 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
$

Bu, Mac'imden timedNTP arka plan programı yerine çalışan ( ntpdatehala çalışıyor çünkü NTP arka planını kullandığı için çalışan) High Sierra 10.13.2 kullanıyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.