como o gnu coreutils 'date' funciona? [fechadas]

3

Não encontrei nenhuma pergunta semelhante neste site. O manpage , apesar de útil em descrever como usar date , não tinha muitas informações de segundo plano. Mesmo a página info (conforme prescrito na manpage: info '(coreutils) date invocation' ), tinha pouco mais do que como ela opera com base na variável TZ .

Eu estou querendo saber como funciona o utilitário de linha de comando date . Especificamente,

date +%s

que retorna segundos desde a época, e. 1467743297 (segundos desde 1970-01-01 00:00:00 UTC ).

Por exemplo, estou pensando que não requer uma conexão com a internet. Então, novamente, ocasionalmente tenta sincronizar novamente com uma fonte específica? Em caso afirmativo, como essa fonte é especificada? Se não, quanta confiança em uma determinada máquina você tem em valores reportados por data?

A seção 21.1.5 da página info implica que date lida apenas com o relógio do sistema / software e, em seguida, qualquer sincronização com o hwclock depende do sistema operacional. Então ... talvez a pergunta seja mais apropriadamente "quais sistemas têm relatórios date +%s mais precisos?" Suponho que isso também implicaria que a precisão de date está limitada à precisão do hardware da máquina relógio, especialmente influenciado pelo relógio do sistema / software? (por exemplo, o relógio sw poderia interferir, distorcer a precisão, mesmo com um relógio hw altamente preciso).

    
por tniles 05.07.2016 / 20:56

2 respostas

4

date não faz nenhum esforço para sincronizar com nada, e apenas faz alguma chamada de sistema (que no linux a strace date ... pode ou não mostrar) para procurar o tempo desde a época como é conhecido pelo sistema. / p>

O próprio sistema pode sincronizar com o relógio do BIOS, ou se uma máquina virtual pode obter a hora atual do pai em que é executado, ou pode usar o NTP (ou outro software que faça mais ou menos a mesma coisa, por exemplo rdate ou, em vez disso, o Precision Time Protocol (PTP)) para sincronizar a hora com outros computadores, ou pode usar um hardware de GPS ou dispositivo de rádio para definir a hora. Nenhuma delas envolve date , a menos que o administrador esteja ouvindo, digamos, BBC Radio e definindo manualmente a hora do sistema com date no topo da hora (eles ainda fazem a parte doo doot doot dee no topo da a hora?).

A precisão do relógio do sistema depende da configuração NTP (ou qualquer outro software usado), se o NTP (ou similar) está quebrado, o BIOS, se o BIOS está quebrado (eu vi uma inicialização do sistema quatro anos o futuro e esse host tinha uma configuração de NTP quebrada por outras razões, boa diversão, sendo este um servidor NFS com Makefile ...), se o clock do hardware está se comportando mal e vários outros detalhes. Se você estiver usando NTP, o comando peers para ntpq ou o arquivo derivado pode valer a pena ser visto.

Para o momento mais preciso (além de colocar um relógio atômico em cada host ...) você pode querer ler em PTP em "Toward Higher Precision" (e também aprender que O tempo é uma ilusão ).

    
por 05.07.2016 / 21:22
2

Sua suposição de que date não requer uma conexão com a Internet está correta. Ele simplesmente mostra a hora atual armazenada no relógio do sistema. (Mais informações sobre os comandos de hora e data )

O clock do hardware é um circuito operado por bateria na placa-mãe que mantém o horário atual enquanto o sistema está desligado ou desconectado.

Na inicialização do sistema, o kernel puxa a hora do hardware e define o relógio do sistema (software). Isso é executado com base no clock do processador, que é muito mais preciso do que o clock de hardware de baixa potência. (Mais aqui )

Os relógios de hardware e software são executados independentemente uns dos outros, embora possam ser sincronizados com os comandos hwclock --systohc ou hwclock --hctosys . O relógio do software normalmente é gravado no relógio de hardware no desligamento do sistema.

Para sincronizar com uma autoridade de controle de tempo externa, use rdate para sincronização única ou configure o utilitário ntp para atualização contínua. Além disso, o daemon ntp calculará o desvio do relógio do sistema em relação a uma fonte da Internet e corrigirá o erro, mesmo se a conexão com a Internet for perdida.

    
por 05.07.2016 / 21:23