Atualizando a hora do sistema Linux programaticamente

2

Eu tenho um sistema de 3 ou 4 máquinas Linux Ubuntu diferentes que eu gostaria de sincronizar com o tempo. Meu plano é usar um deles (vamos chamá-lo de mestre) como o servidor NTP que serve o tempo para as outras três máquinas (vamos chamá-las de crianças).

No entanto, eu gostaria de obter o primeiro horário UTC do mestre e usar servidores on-line não é uma opção (sem internet).

Atualmente estou lendo o horário UTC de um dispositivo GPS on-board via C ++. É possível definir a hora do sistema neste processador usando C ++ e a hora UTC fornecida por um GPS e, em seguida, usar o NTP para sincronizar esse tempo com todos os outros PCs filhos?

    
por Frank 14.08.2018 / 21:08

2 respostas

1

Uma maneira simples é usar o comando date

date -s @<seconds-since-1970>

Se você quiser fazer isso em C ++, veja man settimeofday .

    
por 14.08.2018 / 21:16
1

Sim, não é apenas possível, mas relativamente simples. Existem vários "percursos" e tutoriais disponíveis ref 1 , ref 2 que mostrará como fazer isso.

Algumas outras ideias:

  1. considere usar chronyd em vez de ntpd . O OpenNTPd também seria uma boa escolha, exceto pelo fato de que ele ignora longos de segundos ... mas se você não se importa com isso, é fácil de usar e administrar.

  2. a precisão do tempo do GPS pode variar um pouco de um receptor para outro.

por 14.08.2018 / 22:33