10,14 Mojave
Mojave vẫn sử dụng timed
, nhưng ntpdate
những người trợ giúp ntpq
được gỡ bỏ. Để kiểm tra và cập nhật thời gian hệ thống của bạn, bạn có thể gọi sntp
trực tiếp.
$ 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
Ngoài hộp, một tệp theo dõi bị thiếu, vì vậy nếu bạn gặp phải lỗi vô hại này khi kiểm tra thời gian:
kod_init_kod_db(): Cannot open KoD db file /var/db/ntp-kod: No such file or directory
hoặc bỏ qua lỗi hoặc thử tạo tệp trống đó:
sudo touch /var/db/ntp-kod
sudo chmod 666 /var/db/ntp-kod
10,13 Sierra
High Sierra sử dụng timed
, từ /usr/libexec/timed
, được điều hành bởi người dùng hệ thống _timed
.
timed duy trì độ chính xác của đồng hồ hệ thống bằng cách đồng bộ hóa đồng hồ với đồng hồ tham chiếu thông qua các công nghệ như NTP. Các đầu vào được hợp nhất bên trong thời gian, trong đó nó tính toán độ không chắc chắn để tạo điều kiện lên lịch cho các công việc thời gian chủ động. thời gian cũng nhận thức được các điều kiện năng lượng / pin.
thời gian được quản lý bởi LaunchDaemon /System/Library/LaunchDaemons/com.apple.timed.plist
. chạy theo thời gian
- khi daemon được tải khi khởi động (RunAtLoad: true)
- cứ sau 3600 giây (StartInterval: 3600)
- khi Chế độ trên máy bay bị tắt (com.apple.systemconfiguration chế độ máy bay đã thay đổi: com.apple.radios.plist AirplaneMode sai, có vẻ như được chuyển từ iOS)
Bạn có thể thấy mức độ "tắt" đồng hồ của mình bằng cách xem nội dung của /var/db/timed/com.apple.timed.plist
, trong từ điển TMLastSystemTime trong khóa TMTimeError và khóa 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";
}
timed sử dụng máy chủ thời gian được đặt /etc/ntp.conf
, theo mặc định là
server time.apple.com
timed cũng sử dụng TMTimeSynthesizer, thứ mà CoreTime trên iOS sử dụng để cập nhật đồng hồ nhưng tôi không biết về lịch sử của nó trên macOS:
Đừng tự chạy nhị phân theo thời gian, như đã đề cập trong trang man:
Thời gian không có đối số và người dùng không nên khởi chạy thủ công.
Theo người dùng Diễn đàn Nhà phát triển Apple granada29 trong bài đăng ntpd, tính thời gian và chronyd trong 10.13 , thời gian thực hiện như sau:
timed dường như là một máy khách sntp đơn giản - tức là nó thăm dò NTP định kỳ (15 phút) và sử dụng lệnh gọi hệ thống giải quyết () để đặt đồng hồ sytem. Tôi cho rằng nó có một số thông minh để tránh đẩy lùi đồng hồ nhưng không có cách nào để nói.
10.11 El Capitan đến 10.12 Sierra
pacemaker
là daemon chịu trách nhiệm quản lý thời gian trong macOS. Nó sử dụng adjtime
để điều chỉnh đồng hồ theo nội dung của /var/db/ntp.drift
.
Bạn có thể thấy cách 'tắt' đồng hồ của mình bằng cách xem nội dung của ntp.drift
- ví dụ: tệp của tôi chứa các mục sau:
-23.640
Điều này có nghĩa là đồng hồ cách -23,64 PPM so với thời điểm cần thiết. Đơn vị của số này là PPM, hoặc Phần mỗi triệu. 1 PPM là 1 micro giây / giây hoặc 3,6ms / h.
Bạn có thể thực hiện cập nhật đồng hồ thường xuyên hơn bằng cách chạy pacemaker
với -a
tùy chọn, cung cấp thời gian tính bằng giây để chờ giữa các chuyển động thời gian:
/usr/libexec/pacemaker -a 10
Để xem các tham số đang được OS X sử dụng cho máy điều hòa nhịp tim, hãy mở /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" );
}
Để tìm cài đặt hiện tại của bạn, hãy chạy với -i
tùy chọ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
Bạn có thể hiển thị nhật ký bằng cách chạy với -v
tùy chọn:
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
đã hoạt động. Tôi tự hỏi nếu/var/db/ntp-kod
lỗi gây ra sự cố với đồng bộ hóa tự động - sẽ thử tạo nó và kiểm tra lại sau vài tháng. =)