Como $GPSDATE
está sendo relatado como
Sun Aug 8 06:08:11 PKT 2010
o comando date -s
está fazendo exatamente o que você está dizendo para fazer. Por que está relatando um ano errado (ou nada)? Eu não tenho ideia.
Já que você já está usando ntpd
, por que você não se contenta em deixar o NTP fazer o que ele quer? Isso é um problema "Eu gostaria que o gpsdate funcionasse porque está lá"?
A melhor maneira de nos ajudar a depurá-lo, fornecendo a saída completa
gpsdate -w
na sua pergunta.
adicionado em resposta à saída do gpsdate:
De acordo com a documentação do gpsd quando o campo de modo de um registro TPV é 1
, significa "não consertar". Isso significa que o receptor de GPS não viu dados de satélite suficientes (ou nenhum). Isso implica que o valor do tempo é lixo eletrônico, o que certamente faz sentido se você estiver vendo um ano de 1990 ou 2014. Em seu script, o sleep 2
dá muito pouco tempo para que gpsd
obtenha uma correção de GPS adequada. Esperar por mais tempo pode ajudar, não ter uma antena adequada significa que você esperará para sempre uma correção.
O Protocolo de horário da rede implementado por ntpd
não precisa de GPS para funcionar. Ele troca informações de sincronização de tempo com outros hosts da Internet, alguns dos quais obtêm o relógio de uma referência como GPS. Como seu script para e reinicia seu ntpd, você pode simplesmente esquecer uma correção de GPS e trabalhar com isso. Por exemplo, a máquina na qual estou digitando usa ntpd e tem +4,7 milissegundos de UTC, o que é mais do que preciso para muitos propósitos. Você pode usar ntpq -p
para descobrir se e como seu relógio está sincronizado.