10.14 Mojave
O Mojave ainda usa timed
, mas ntpdate
e os ajudantes ntpq
são removidos. Para verificar e atualizar a hora do sistema, você pode ligar sntp
diretamente.
$ 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
Fora da caixa, está faltando um arquivo de rastreamento; portanto, se você receber esse erro inofensivo ao verificar o tempo:
kod_init_kod_db(): Cannot open KoD db file /var/db/ntp-kod: No such file or directory
ignore o erro ou tente criar esse arquivo vazio:
sudo touch /var/db/ntp-kod
sudo chmod 666 /var/db/ntp-kod
10.13 High Sierra
O High Sierra usa timed
, de /usr/libexec/timed
, é executado pelo usuário do sistema _timed
.
O timed mantém a precisão do relógio do sistema sincronizando o relógio com os relógios de referência por meio de tecnologias como NTP. As entradas são mescladas dentro do tempo programado, onde calcula a incerteza para facilitar o agendamento de trabalhos em tempo proativo. temporizado também está ciente das condições de energia / bateria.
timed é gerenciado pelo LaunchDaemon /System/Library/LaunchDaemons/com.apple.timed.plist
. execuções cronometradas…
- quando o daemon é carregado na inicialização (RunAtLoad: true)
- a cada 3600 segundos (StartInterval: 3600)
- quando o Modo Avião estiver desativado (o modo avião com.apple.systemconfiguration mudou: com.apple.radios.plist AirplaneMode false, que parece ser transferido do iOS)
Você pode ver como o relógio está "desligado", observando o conteúdo de /var/db/timed/com.apple.timed.plist
, no dicionário TMLastSystemTime, na chave TMTimeError e na chave 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 usa o servidor de horário definido /etc/ntp.conf
, que por padrão é
server time.apple.com
O timed também usa o TMTimeSynthesizer, algo que o CoreTime no iOS usa para atualizar o relógio, mas não conheço seu histórico no macOS:
Não execute o binário temporizado, conforme mencionado na página de manual:
timed não requer argumentos e os usuários não devem iniciá-lo manualmente.
De acordo com o usuário granada29 dos fóruns de desenvolvedores da Apple no post ntpd, cronometrado e chronyd na versão 10.13 , o timed executa o seguinte:
timed parece ser um cliente sntp simples - ou seja, ele pesquisa o NTP periodicamente (15 minutos) e usa a chamada do sistema settimeofday () para definir o relógio do sistema. Suponho que tenha alguma esperteza para evitar atrasar o relógio, mas não há como saber.
10.11 El Capitan a 10.12 Sierra
pacemaker
é o daemon responsável por gerenciar o tempo no macOS. Ele usa adjtime
para ajustar o relógio de acordo com o conteúdo de /var/db/ntp.drift
.
Você pode ver como o relógio está "desligado", observando o conteúdo de ntp.drift
- por exemplo, meu arquivo contém o seguinte:
-23.640
Isso significa que o relógio está a -23,64 PPM da hora que deveria estar. As unidades desse número são PPM, ou partes por milhão. 1 PPM é 1 microssegundo / segundo ou 3,6ms / h.
Você pode atualizar o relógio com mais frequência executando pacemaker
a -a
opção, fornecendo um tempo em segundos para aguardar entre os movimentos do tempo:
/usr/libexec/pacemaker -a 10
Para ver os parâmetros sendo usados pelo OS X para marcapasso, abra /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" );
}
Para encontrar suas configurações atuais, execute com a -i
opção:
/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
Você pode mostrar o log executando com a -v
opção:
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
funcionava. Gostaria de saber se o/var/db/ntp-kod
erro está causando problemas com a sincronização automática - tente criá-lo e verifique novamente em alguns meses. =)