Como você programaticamente definir o relógio de hardware no Linux?
Pergunta
Linux fornece a chamada stime (2) para definir a hora do sistema. No entanto, enquanto isso irá atualizar a hora do sistema, ele não define o relógio de hardware BIOS para corresponder ao novo horário do sistema.
sistemas Linux normalmente sincronizar o relógio do hardware com a hora do sistema no desligamento e em intervalos periódicos. No entanto, se a máquina recebe energia-ciclo antes de um desses sincroniza automáticas, o tempo será incorreta quando a máquina é reiniciado.
Como você garante que o relógio de hardware é atualizado quando você definir a hora do sistema?
Solução
Confira o homem-página rtc para detalhes, mas se você está logado como root, algo como isto:
struct rtc_time {
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday; /* unused */
int tm_yday; /* unused */
int tm_isdst;/* unused */
};
struct rtc_time rt;
/* set your values here */
fd = open("/dev/rtc", O_RDONLY);
ioctl(fd, RTC_SET_TIME, &rt);
close(fd);
Outras dicas
Depois de chamar stime (), faça o seguinte:
system("/sbin/hwclock --systohc");
Veja a hwclock (8) página de manual para mais informações.
Gostaria de começar por ler o código-fonte do hwclock.
Eu também gostaria de salientar o relógio do hardware só é preciso um ponto (eu sistemas que perdem / ganhar um par de segundos um dia visto).
Você já considerou configurar o daemon de tempo de rede para sincronizar seu relógio contra um servidor de tempo?
É certo que este sincronização não acontece até depois das daemon inicia, então, manter o seu relógio de hardware em sincronia também ajuda entre o poder-se eo ponto o tempo daemon sincronizado contra o servidor tempo.
Se o editor de texto é diferente do Kubuntu (kate é o padrão no editor), usar o seu próprio com o comando sudo
no terminal.
- executar de terminal
- copiar e colar este comando
imprensa
sudo kate /etc/default/rcS
Enter - digite a senha de usuário (sua senha de login) pressione Enter
- editor de texto será aberta na área de trabalho
- alterar a linha
UTC=yes
paraUTC=no
- e clique em Salvar (no topo da barra de abas editor de texto)
- reinicialização