Mac에서 시계가 제대로 업데이트되고 있는지 어떻게 알 수 있습니까?


45

날짜 및 시간 환경 설정에서 자동 시간 동기화를 활성화 할 때 시계를 조정 한 상태로 OS X의 기본 설정이 무엇인지 알고 싶습니다.

ntpdMavericks (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 하이 시에라

높은 시에라는 사용 timed에서, /usr/libexec/timed시스템 사용자에 의해 실행 _timed.

timed는 NTP와 같은 기술을 통해 클록을 기준 클록과 동기화하여 시스템 클록 정확도를 유지합니다. 입력은 시간 내에 통합되어 사전 예방 적 시간 작업을 예약하기 위해 불확실성을 계산합니다. timed는 전원 / 배터리 상태도 알고 있습니다.

timed는 LaunchDaemon에 의해 관리됩니다 /System/Library/LaunchDaemons/com.apple.timed.plist. 정시 운행 ...

  • 부팅시 데몬이로드 될 때 (RunAtLoad : true)
  • 3600 초마다 (StartInterval : 3600)
  • 비행기 모드가 비활성화 된 경우 (com.apple.systemconfiguration 비행기 모드가 변경됨 : com.apple.radios.plist 비행기 모드 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";
}

언급 된 plist의 Xcode 스크린 샷

timed는에 설정된 시간 서버를 사용하며 /etc/ntp.conf기본적으로

server time.apple.com

timed는 또한 TMTimeSynthesizer를 사용합니다 .iOS의 CoreTime이 시계를 업데이트하는 데 사용하지만 macOS의 기록을 알지 못합니다.

타임 소스

매뉴얼 페이지에 언급 된대로 시간이 지정된 바이너리를 직접 실행하지 마십시오.

timed는 인수를 취하지 않으며 사용자는 수동으로 실행하지 않아야합니다.

10.13의 ntpd, timed 및 chronyd 게시물의 Apple Developer Forums 사용자 granada29에 따르면 timed는 다음을 수행합니다.

timed는 간단한 sntp 클라이언트 인 것처럼 보입니다. 즉 NTP를 주기적으로 폴링하고 (15 분) settimeofday () 시스템 호출을 사용하여 시스템 시계를 설정합니다. 시계를 뒤로 밟지 않는 것이 영리하다고 생각하지만 말할 방법이 없습니다.

10.11 엘 캐피 탄-10.12 시에라

pacemakermacOS에서 시간을 관리하는 데몬입니다. adjtime의 내용에 따라 시계를 조정하는 데 사용 됩니다 /var/db/ntp.drift.

ntp.drift예를 들어, 내 파일에는 다음 내용이 포함되어 있습니다. 예를 들어 내 파일 의 내용을 보면 시계의 '끄기'상태를 확인할 수 있습니다 .

-23.640

즉, 시계는 원래 시간과 -23.64 PPM 떨어져 있습니다. 이 숫자의 단위는 PPM 또는 Part Per Million입니다. 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%

내 Mojave 시스템은 자동으로 동기화되지 않지만 sntp작동했습니다. /var/db/ntp-kod오류가 자동 동기화에 문제를 일으키는 지 궁금합니다 . 몇 개월 후에 오류를 만들어 다시 확인해 보겠습니다. =)
Ken Williams

5

이 답변은 10.12 Sierra 이하에만 적용됩니다.

세부 사항은 참조에 도움이 될 수 있지만 다른 대답은 최신 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보다 작다고 가정하면 (정확한 시간이 덜 중요한 시스템의 경우 일반 상황에서 지연이 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 초마다 한 번 이상이며 클럭 오류가 0.1 밀리 초 미만인 경우 훨씬 적게 조정됨을 나타냅니다.

오프셋이 초 이상인 경우 사용하는 시간 서버를 변경하거나 더 많은 에너지와 CPU를 사용하기 위해 페이스 메이커에 사용 된 값을 변경하려고하지만 Apple의 설정과 교환하여 실제 시간에 더 가까운 시계를 가질 수 있습니다 10.9와 함께 제공됩니다.


4

당신이 가면 http://time.gov 당신은 (두 번째까지) 공식 시간을 볼 수 있으며, 사용자의 시스템 시간이 정확한지 아닌지 확인하기 위해 그것을 사용합니다. 이 독립적으로 시스템 시간 (예를 들어, 당신이 볼 수있는, 공식 NIST 시간이며, 브라우저에 자체 동기화를 않습니다 여기에 OS X 분명히하지 않는 반면 time.gov 핸들, 초 도약 있음).


이것이 "시계 동기화 유지"를 사용하는 선택에 어떤 영향을 미치는지 자세히 설명해 주시겠습니까? "Apple Watch 확인-최대 2 초까지 정확합니다."
bmike

1
문제는 "Mac에서 시계가 제대로 업데이트되어 있는지 어떻게 알 수 있습니까?"입니다. "공식 시간을 보시오"가 귀하의 질문에 대답하지 않는다면, 아마도 그 말을 바꾸어야 할 것입니다.
asmeurer

time.gov에 관해서는 공식 NIST 시간이며 페이지를 방문하면 브라우저에서 자체 동기화를 수행합니다. "Apple Watch 확인"이라고 말하는 것은 OS X 시스템 시계가 기본적으로 이미 동기화되어 있다는 것을 말하는 것과 같습니다 (그렇지만 실제로 질문에 대답하지는 않습니다). 이것은 Apple Watch보다 훨씬 저렴하며 Apple Watch에는 디지털 보조 디스플레이 AFAIK가 없습니다.
asmeurer

제 생각에는 시계의 시간을 정확하고 정확하게 유지하기 위해 더 많은 엔지니어링 기술이 필요했습니다. Mac 시계는 매우 정확하고 정확하지 않습니다. 내가 알고있는 모든 컴퓨터에도 마찬가지입니다. 시간을 지키기 위해서는 정확성이 어렵습니다. 웹 기능에 대한 자세한 설명을 보려면 +1 (답의 본문에없는 경우에도)
bmike

4

High Sierra로 시작하여 ntpd 시스템 데몬은 / usr / libexec / timed를 호출하는 시간 제한 시스템 데몬으로 대체되었습니다.

세부 정보를 얻는 데 가장 적합한 임원 systemsetup은 다양한 플래그를 사용하여 (루트로 실행)입니다.

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

결과 출력은 훨씬 덜 장황합니다 (= 보링). 예 : ∂T / 드리프트 세부 사항 없음.

분명히 시간이 초과 여러 가지가 시스템 환경 설정 / NTP를 파일에 입력하는 경우에도 - 용도를 하나의 NTP 서버 (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
/System/Library/LaunchDaemons/org.ntp.ntpd-legacy.plist가 비활성화되고 SIP로 "보안"되므로 High Sierra를 사용할 때 이전 ntpd를 활성화하는 팁은 좋은 옵션이 아닙니다. 따라서로드하지 않으려면 먼저 SIP를 비활성화해야합니다. (/ usr / bin / csrutil disable)
Juergen Braendle

2

시계 설정에 대한 신뢰성있는 답변을 얻으려면 디버그 모드에서 ntpdate를 실행하십시오.

ntpdate -d pool.ntp.org

이것은 잠시 동안 gyrate하고 다음과 같은 줄로 끝납니다

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

이 경우 내 로컬 시계가 약 810 µs 떨어져 있다는 것을 의미했습니다 (실제로는 훌륭하지만 100 ms 미만의 값은 작동하는 동기화를 나타냅니다).


1

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
$

이것은 timedNTP 데몬 대신 실행되는 High Sierra 10.13.2를 실행 하는 Mac에서 가져온 것입니다 (NTP 데몬을 ntpdate사용하지 않기 때문에 여전히 작동합니다).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.