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 [email protected] 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. =)Esta resposta se aplica apenas a 10.12 Sierra e inferiores.
Os detalhes podem ser úteis para referência, mas outra resposta cobre os detalhes mais recentes de pontualização do macOS de maneira excelente.
O primeiro passo é verificar se o seu horário está configurado.
Supondo que você tenha valores de atraso / deslocamento / jitter menores que 100 (o atraso pode ser menor que 1000 em situações normais para sistemas críticos com precisão de tempo), o próximo comando a ser executado no terminal é
ntpq
seguido pelo servidor de tempo da suantpq
preferência e do sistema. Você também pode testar outros servidores de horário para ver se eles têm atrasos menores, pois o sistema de controle de horas gosta de ter uma resposta rápida e próxima dos servidores de horário ao corrigir o tempo para diferenças de milissegundos e calcular como o relógio de hardware atual está se afastando do horário padrão .A próxima coisa a verificar é o seu programa de marcapasso:
Isso mostra que, na bateria, o intervalo de ajuste não é maior que uma vez a cada 10 segundos e é ajustado ainda menos se o erro do relógio for menor que 0,1 milissegundo.
Se você achar que seu deslocamento é de segundos ou mais, convém alterar os servidores de tempo que você usa ou talvez alterar os valores usados no marcapasso para usar mais energia e CPU, mas ter um relógio mais próximo do tempo real em troca das configurações que a Apple possui. enviado com 10.9.
fonte
Se você for para http://time.gov, poderá ver a hora oficial (até a segunda) e usá-la para verificar se a hora do sistema está correta ou não. Observe que esse é o horário oficial do NIST e faz sua própria sincronização no navegador, independentemente do horário do sistema (como exemplo, você pode ver aqui que o time.gov lida com segundos bissextos, enquanto o OS X aparentemente não).
fonte
Começando com High Sierra, o daemon do sistema ntpd foi substituído pelo daemon do sistema cronometrado, que chama / usr / libexec / timed.
O melhor executivo que encontrei para obter detalhes é
systemsetup
(executado como root) com seus vários sinalizadores:A saída resultante é de longe menos detalhada (= chata). Por exemplo, sem detalhes ∂T / deriva.
O tempo programado aparentemente usa apenas um servidor ntp (o primeiro listado - verificado com o WireShark / LittleSnitch), mesmo que vários sejam inseridos no arquivo de preferências do sistema / ntp.conf.
Leitura adicional (não muito técnica): Alguém conseguiu? Como a High Sierra mudou a sincronização de horário
Um daemon legado ntpd ainda está presente, mas não foi carregado. Ele pode ser carregado digitando Terminal.app:
no modo desativado SIP. A entrada
ntpq -p
funcionará novamente então.Para carregar o daemon no modo ativado por SIP, copie o arquivo para / Library / LaunchDaemons /:
Modifique o rótulo do plist com nano ou outro editor de org.ntp.ntpd-legacy para org.ntp.ntpd:
Carregue o daemon:
Se eu encontrar um executivo melhor para obter detalhes de tempo com o daemon High Sierra padrão, a resposta será atualizada.
fonte
Para obter uma resposta confiável sobre como o relógio está definido, execute o ntpdate no modo de depuração:
Isso girará por um tempo e terminará em uma linha como
Nesse caso, isso significava que meu relógio local estava fora de cerca de 810 µs (o que seria espetacular, se realmente verdadeiro, mas o valor bem abaixo de 100 ms indica uma sincronização de trabalho).
fonte
Para verificar a sincronização do relógio, semelhante à resposta que sugere executar
ntpdate
no modo de depuração, você também pode executá-lo no modo de consulta para obter uma saída menos detalhada.É do meu Mac executando o High Sierra 10.13.2, que é executado
timed
em vez do daemon NTP (ntpdate
ainda funciona porque não usa o daemon NTP).fonte