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.plist
LaunchDaemon หมดเวลาทำงาน ...
- เมื่อ 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";
}
หมดเวลาใช้เซิร์ฟเวอร์เวลาที่กำหนด/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%
sntp
ใช้ได้ ฉันสงสัยว่า/var/db/ntp-kod
ข้อผิดพลาดนั้นทำให้เกิดปัญหากับการซิงค์อัตโนมัติหรือไม่ - จะลองสร้างมันขึ้นมาและตรวจสอบอีกครั้งในอีกไม่กี่เดือน =)