ฉันจะทราบได้อย่างไรว่า Mac ของฉันอัปเดตนาฬิกาอยู่อย่างเหมาะสมหรือไม่


45

ฉันต้องการทราบว่าการตั้งค่าเริ่มต้นสำหรับ OS X คืออะไรในแง่ของการปรับนาฬิกาเมื่อฉันเปิดใช้งานการซิงค์เวลาอัตโนมัติในการตั้งค่าวันที่ & เวลา

ฉันรู้ว่าntpddaemon ที่น่าเคารพใน Mavericks (10.9) และ Yosemite (10.10) ไม่รับผิดชอบในการปรับเวลาอีกต่อไปและpacemakerมีการแนะนำโปรแกรมใหม่- ดังนั้นฉันจะรู้ได้อย่างไรว่าสิ่งต่าง ๆ ทำงานหรือต้องการการปรับเวลา

คำตอบ:


71

10.14 ซ้อม

โมฮาวียังคงใช้อยู่timedแต่ntpdateและผู้ช่วยntpqจะถูกลบออก ในการตรวจสอบและอัพเดตเวลาของระบบคุณสามารถโทร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 เซียร่าสูง

High Sierra ใช้timedจากการเรียกใช้โดยผู้ใช้ระบบ/usr/libexec/timed_timed

หมดเวลารักษาความถูกต้องนาฬิการะบบโดยการประสานนาฬิกากับนาฬิกาอ้างอิงผ่านเทคโนโลยีเช่น NTP อินพุตถูกรวมเข้าด้วยกันภายในกำหนดเวลาซึ่งจะคำนวณความไม่แน่นอนเพื่ออำนวยความสะดวกในการจัดตารางเวลางานเชิงรุก หมดเวลายังตระหนักถึงสภาพพลังงาน / แบตเตอรี่

หมดเวลาที่มีการจัดการโดย /System/Library/LaunchDaemons/com.apple.timed.plistLaunchDaemon หมดเวลาทำงาน ...

  • เมื่อ daemon ถูกโหลดเมื่อบู๊ต (RunAtLoad: true)
  • ทุก 3600 วินาที (เริ่มต้นช่วง: 3600)
  • เมื่อโหมดเครื่องบินถูกปิดใช้งาน (โหมดเครื่องบิน com.apple.systemconfiguration เปลี่ยนไป: com.apple.radios.plist AirplaneMode false ซึ่งดูเหมือนว่าจะมาจาก iOS)

คุณสามารถดูว่านาฬิกาของคุณ 'ปิด' ได้อย่างไรโดยดูที่เนื้อหาของ/var/db/timed/com.apple.timed.plistภายใต้พจนานุกรม TMLastSystemTime ในคีย์ TMTimeError และคีย์ TMScaleFactorError

$ 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 สกรีนช็อตของ plist ที่กล่าวถึง

หมดเวลาใช้เซิร์ฟเวอร์เวลาที่กำหนด/etc/ntp.confซึ่งโดยค่าเริ่มต้นคือ

server time.apple.com

เวลายังใช้ TMTimeSynthesizer ซึ่งเป็นสิ่งที่ CoreTime บน iOS ใช้เพื่ออัปเดตนาฬิกาด้วย แต่ฉันไม่ทราบประวัติของมันใน macOS:

หมดเวลาแหล่งที่มา

อย่าเรียกใช้ไบนารีที่กำหนดเวลาด้วยตัวเองดังที่ได้กล่าวไว้ในหน้า man:

หมดเวลาใช้งานไม่มีข้อโต้แย้งและผู้ใช้ไม่ควรเปิดใช้งานด้วยตนเอง

ตามผู้ใช้ Apple Developer Forums granada29 ในโพสต์ntpd, timed และ chronyd ใน 10.13 , timed ทำสิ่งต่อไปนี้:

หมดเวลาดูเหมือนจะเป็นไคลเอนต์ sntp ง่าย - นั่นคือมันสำรวจ NTP เป็นระยะ (15 นาที) และใช้การเรียกระบบ settimeofday () เพื่อตั้งค่านาฬิการะบบ ฉันคิดว่ามันมีความฉลาดพอสมควรที่จะหลีกเลี่ยงการเหยียบถอยหลังไปข้างหลัง แต่ไม่มีทางที่จะบอก

10.11 El Capitan ถึง 10.12 Sierra

pacemakerเป็น daemon ที่รับผิดชอบการจัดการเวลาใน macOS จะใช้เพื่อปรับนาฬิกาต่อเนื้อหาของadjtime/var/db/ntp.drift

คุณสามารถดูว่านาฬิกาของคุณเป็นอย่างไรโดยดูที่เนื้อหาของntp.drift- ตัวอย่างเช่นไฟล์ของฉันมีสิ่งต่อไปนี้

-23.640

ซึ่งหมายความว่านาฬิกาอยู่ที่ -23.64 PPM ห่างจากเวลาที่ควรจะเป็น หน่วยของจำนวนนี้คือ PPM หรือชิ้นส่วนต่อล้าน 1 PPM คือ 1 microsecond / วินาทีหรือ 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%

ระบบ Mojave ของฉันจะไม่ซิงค์โดยอัตโนมัติ แต่sntpใช้ได้ ฉันสงสัยว่า/var/db/ntp-kodข้อผิดพลาดนั้นทำให้เกิดปัญหากับการซิงค์อัตโนมัติหรือไม่ - จะลองสร้างมันขึ้นมาและตรวจสอบอีกครั้งในอีกไม่กี่เดือน =)
Ken Williams

5

คำตอบนี้ใช้กับ 10.12 เซียร์เท่านั้นและต่ำกว่า

รายละเอียดอาจมีประโยชน์สำหรับการอ้างอิง แต่คำตอบอีกข้อหนึ่งครอบคลุมรายละเอียดการจับเวลาของ macOS รุ่นใหม่อย่างยอดเยี่ยม


ขั้นตอนแรกคือการดูว่ามีการตั้งเวลาของคุณหรือไม่

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 (ล่าช้าอาจจะน้อยกว่า 1,000 ในสถานการณ์ปกติสำหรับระบบเวลาที่ถูกต้องมีความสำคัญน้อยกว่า) คำสั่งต่อไปที่จะทำงานในขั้วntpqตามด้วย timeserver จากคุณ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 วินาทีและปรับน้อยลงหากความผิดพลาดของนาฬิกาน้อยกว่า 0.1 มิลลิวินาที

หากคุณพบว่าออฟเซ็ตของคุณเป็นวินาทีหรือนานกว่านั้นคุณอาจต้องการเปลี่ยนไทม์เซิร์ฟที่คุณใช้หรืออาจเปลี่ยนค่าที่ใช้กับเครื่องกระตุ้นหัวใจเพื่อใช้พลังงานและซีพียูมากขึ้น แต่มีนาฬิกาใกล้เคียงกับเวลาจริง มาพร้อมกับ 10.9


4

หากคุณไปที่http://time.govคุณสามารถดูเวลาที่เป็นทางการ (สูงสุดที่สอง) และใช้เพื่อยืนยันว่าเวลาระบบของคุณถูกต้องหรือไม่ โปรดทราบว่านี่เป็นเวลา NIST อย่างเป็นทางการและทำการซิงโครไนซ์ของตัวเองในเบราว์เซอร์โดยไม่ขึ้นอยู่กับเวลาของระบบ (เป็นตัวอย่างคุณสามารถดูได้ที่นี่ว่า time.gov จัดการวินาทีกระโดดในขณะที่ OS X ไม่เห็น)


คุณช่วยอธิบายรายละเอียดว่าสิ่งนี้มีผลต่อการเลือกของฉันอย่างไรในการใช้ "ทำข้อมูลนาฬิกาให้ตรงกัน" ฉันคิดว่านี่เป็นคำตอบที่ดีเช่นเดียวกับ "ตรวจสอบ Apple Watch ของคุณ - มันแม่นยำถึงวินาที"
bmike

1
คำถามคือ "ฉันจะบอกได้อย่างไรว่า Mac ของฉันอัปเดตนาฬิกาอยู่หรือไม่" หาก "ดูเวลาทางการ" ไม่ตอบคำถามของคุณคุณน่าจะใช้ข้อความใหม่
asmeurer

เกี่ยวกับ time.gov เป็นเวลา NIST อย่างเป็นทางการและทำการซิงโครไนซ์ของตัวเองในเบราว์เซอร์เมื่อคุณเยี่ยมชมหน้า การพูดว่า "ตรวจสอบ Apple Watch" จะเหมือนกับที่บอกให้คุณทราบว่านาฬิการะบบ OS X ของคุณได้รับการซิงโครไนซ์แล้วตามค่าเริ่มต้น (ซึ่งเป็นจริง แต่ไม่ตอบคำถามจริงๆ) นี่เป็นราคาที่ถูกกว่า Apple Watch มากและ Apple Watch ไม่มี AFAIK จอแสดงผลดิจิตอลที่สอง
asmeurer

ข้อสันนิษฐานของฉันคือนาฬิกามีวิศวกรรมมากขึ้นเพื่อรักษาเวลาทั้งความแม่นยำและแม่นยำ นาฬิกา Mac นั้นมีความแม่นยำและแม่นยำ เช่นเดียวกันกับคอมพิวเตอร์ทุกเครื่องที่ฉันทราบ - ความแม่นยำยากสำหรับการจับเวลา +1 สำหรับคำอธิบายโดยละเอียดของคุณสมบัติเว็บ (แม้ว่าจะไม่ได้อยู่ในเนื้อหาของคำตอบ)
bmike

4

การเริ่มต้นด้วย High Sierra the system ntpd daemon ถูกแทนที่ด้วย system daemon ที่หมดเวลาซึ่งเรียกใช้ / usr / libexec / timed

exec ที่ดีที่สุดที่ฉันได้พบเพื่อรับรายละเอียดคือsystemsetup(วิ่งเป็น root) ด้วยธงต่างๆ:

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

ผลลัพธ์ที่ได้คือโดย verbose น้อยกว่ามาก (= น่าเบื่อ) เช่นไม่มีรายละเอียด∂T / drift

หมดเวลาชัดเจนใช้ ntp-server เดียวเท่านั้น (รายการแรกที่ระบุ - ตรวจสอบกับ WireShark / LittleSnitch) แม้ว่าจะมีหลายป้อนในไฟล์ preferences / ntp.conf

อ่านเพิ่มเติม (ไม่มากเทคนิค): มีใครมีเวลาหรือไม่ High Sierra เปลี่ยนแปลงวิธีการประสานเวลาอย่างไร


Legacy ntpd daemon ดั้งเดิมยังคงอยู่ แต่ไม่โหลด มันสามารถโหลดได้โดยป้อนใน Terminal.app:

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

ในโหมดปิดใช้งาน SIP การเข้าntpq -pจะทำงานอีกครั้ง

หากต้องการโหลด daemon ในโหมดที่เปิดใช้งาน SIP ให้คัดลอกไฟล์ไปยัง / Library / LaunchDaemons /:

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

แก้ไขป้ายกำกับของ plist ด้วย nano หรือตัวแก้ไขอื่นจาก org.ntp.ntpd-legacy เป็น org.ntp.ntpd:

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

โหลด daemon:

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

หากฉันพบผู้บริหารที่ดีกว่าในการรับรายละเอียดเวลาด้วย High Sierra daemon ค่าเริ่มต้นคำตอบจะได้รับการอัปเดต


1
คำแนะนำในการเปิดใช้งาน ntpd เก่าไม่ใช่ตัวเลือกที่ดีเมื่อใช้ High Sierra เนื่องจาก /System/Library/LaunchDaemons/org.ntp.ntpd-legacy.plist ถูกปิดใช้งานและ "ปลอดภัย" ด้วย SIP ดังนั้นหากคุณไม่ต้องการโหลดคุณต้องปิดการใช้งาน SIP ก่อน (/ usr / bin / csrutil ปิดใช้งาน)
Juergen Braendle

2

เพื่อให้ได้คำตอบที่น่าเชื่อถือในการตั้งนาฬิกาของคุณให้รัน 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 หมายถึงการซิงโครไนซ์ที่ใช้งานได้)


1

ในการตรวจสอบการซิงค์นาฬิกาคล้ายกับคำตอบที่แนะนำให้เรียกใช้ntpdateในโหมดดีบั๊กคุณยังสามารถเรียกใช้ในโหมดเคียวรีเพื่อรับเอาต์พุต verbose ที่น้อยลง

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

สิ่งนี้มาจาก Mac ของฉันที่ใช้ High Sierra 10.13.2 ซึ่งทำงานtimedมากกว่า NTP daemon ( ntpdateยังใช้งานได้เพราะมันไม่ได้ใช้ NTP daemon)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.