Come posso impostare l'ora e la data da Internet?


35

Come posso recuperare la data da Internet e impostare l'orologio del mio computer dalla riga di comando?


3
Non capisco i voti negativi. Domande semplici sono ciò che rende potente una comunità. Ad esempio, vedi questo
Mohsen,

3
Quando passo con il mouse sopra la freccia rivolta verso il basso di una domanda, vedo: "Questa domanda non mostra alcuno sforzo di ricerca; è poco chiara o non utile". Sarei tentato di sottovalutare la tua domanda in base alla prima (nessuna indicazione di ciò che hai trovato), alla seconda (nessuna indicazione su quale piattaforma specifica stai lavorando e perché questa deve essere a riga di comando (invece del solito demone temporale) ) e il terzo (la maggior parte degli utenti * nix avranno un demone temporale installato per impostazione predefinita).
Anthon,

+1 Non capisco neanche i voti negativi, semplicemente perché questo è qualcosa che mi ha infastidito molte volte prima, e sembra impossibile trovare qualcosa di conciso e utile su questo tema specifico.
10

@Mohsen Non ho effettuato il downgrade, ma la differenza con la domanda che hai collegato è che non c'è switchruby mentre puoi impostare direttamente la data tramite date -s(come mostrato nella manpage), o usare uno dei comandi descritti di seguito ...
Ulrich Dangel,

1
@Anthon Non sono d'accordo: quella domanda riguarda un piccolo dispositivo con BusyBox, il che rende il consiglio generico “usa NTP” non necessariamente applicabile
Il SO di Gilles

Risposte:


29

Puoi usare :

sudo dpkg-reconfigure tzdata

per configurare il fuso orario.

Per aggiornare l'ora e la data da Internet, utilizzare quanto segue:

Installare

Se ntpd non è installato, utilizzare uno dei seguenti comandi per installare ntpd:

  • Per RPM basato:

    yum install ntp 
    
  • Per Debian basato:

    sudo apt-get install ntp
    

Configurazione

Dovresti almeno impostare il seguente parametro nel file di configurazione /etc/ntp.conf: server

Ad esempio, apri il file /etc/ntp.conf usando l'editor di testo vi:

  # vi /etc/ntp.conf

Individua il parametro del server e impostalo come segue:

  server pool.ntp.org

Salvare il file e riavviare il servizio ntpd:

  # /etc/init.d/ntpd start

È possibile sincronizzare l'orologio di sistema con un server NTP immediatamente con il comando seguente:

  # ntpdate pool.ntp.org

* Per impostare manualmente data e ora, utilizzare la sintassi seguente:

 date --set="STRING"

Ad esempio, impostare i nuovi dati su 2 ott 2006 18:00:00, digitare il seguente comando come utente root:

# date -s "2 OCT 2006 18:00:00"

O

# date --set="2 OCT 2006 18:00:00"

Puoi anche semplificare il formato usando la sintassi seguente:

# date +%Y%m%d -s "20081128"

Per impostare l'ora, utilizzare la sintassi seguente:

# date +%T -s "10:13:13"

Dove,

10: ora (hh) 13: minuto (mm) 13: secondo (ss)

Usa l'equivalente della locale% p di AM o PM, inserisci:

# date +%T%p -s "6:10:30AM"

# date +%T%p -s "12:10:30PM"

Sebbene le informazioni sulla data sembrino tutte valide, non tengono conto dei requisiti from the internetdel titolo del PO da nessuna parte.
Anthon,

Credo che il pacchetto tzdata (fuso orario) sincronizzi i dati solo da Internet. Correggimi se sbaglio.
tusharmakkar08,

3
tzdata è informazioni sui fusi orari e l'ora legale (inizio, fine, epoca) e non la data e l'ora effettive . Naturalmente è utile sapere come arrivare all'ora locale in base alla conoscenza del fuso orario e di un orario UTC, ma è comunque necessario recuperare quest'ultimo da Internet.
Anthon,

Tui hai torto. i dati del fuso orario devono essere aggiornati (poiché si verificano continuamente cambiamenti) MA non si aggiorna automaticamente da Internet NOR imposta l'ora da Internet.
Ulrich Dangel,

@Anthon: ho modificato la mia risposta di conseguenza. Grazie.
tusharmakkar08,

23

Ho trovato un piccolo codice per aggiornare il tuo tempo nel caso in cui non desideri installare nulla solo per aggiornare la data. :)

sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"

1
Uso google.inl'ora corrente per il mio fuso orario (INDIA).
Dilawar,

Nota il trailing Zche indica che l'ora è indicata nel fuso orario zulu, quindi non dovrebbe essere necessaria alcuna manipolazione speciale del fuso orario se il fuso orario del computer è impostato correttamente.
user202729

10

Io lo uso questo:

sudo ntpd -qg; sudo hwclock -w

per prima cosa dì a ntpd di impostare l'ora e fermarsi dopo con -q. Inoltre, nel caso in cui un tuo orologio abbia un grosso errore, dobbiamo dire a ntpd di regolare anche in quel caso con -g. Infine, scrivi l'orologio sull'hardware per preservare le modifiche al riavvio con hwclock -w (-w per impostare l'orologio hardware all'ora di sistema corrente, c'è una differenza).


1
tendo a fare questo con un "&&" invece del punto e virgola in modo che se il primo comando dovesse fallire (es. connettività di rete inattiva) il secondo comando è in cortocircuito
Theophrastus,


5

Alcune distribuzioni sono spedizione rdate a tale scopo. Utilizzo di base:

# just query
bash-4.2$ rdate pool.ntp.org
rdate: [pool.ntp.org]   Wed Jun 12 11:05:40 2013

# set system time
bash-4.2$ rdate -s pool.ntp.org


pool.ntp.orgora rifiuta le connessioni da rdate. time.nist.govlavori. Anche dopo aver impostato l'ora di sistema, è necessario impostare l'orologio hardware, nonché mediante l'esecuzione hwclock -wper impostare il tempo del sistema. È quindi possibile verificare che sia corretto eseguendohwclock -r
MatthewLee

5

Dopo alcune ricerche, ho finito con questo. L'ho anche applicato al mio server:

sudo apt-get install ntp
sudo dpkg-reconfigure ntp
ntpq -p

Se l'ultimo comando mostra un elenco valido di server, sei a posto. Il comando eseguirà una serie piuttosto complessa di algoritmi che itererà la deriva del tuo orologio, tra le altre cose, e compenseranno. Ti ritroverai con un orologio abbastanza preciso anche se perdi la connessione ai server NTP. Tuttavia, il comando richiede alcuni minuti per iniziare.

Fonte: qui e qui .


0

Per trovare "peer" (host su cui è possibile eseguire query) è possibile utilizzare ntpq -p.

Se hai già un servizio NTP in esecuzione devi interromperlo prima di aggiornare manualmente, ad esempio utilizzando sudo service ntp stop.

Ora puoi interrogare un peer, ad esempio usando sudo ntpdate "peer".


0

Usando lo strumento rdate come suggerito nella risposta di manatwork , ma con il protocollo SNTP -ne le -4opzioni IPv4 su:

# just print synced time, not set
rdate -n -4 -p time-a.nist.gov

# print and set synced time
sudo rdate -n -4 time-a.nist.gov

Lo strumento può essere installato su Debian in questo modo:

sudo apt-get install rdate

0

Oltre alla risposta di Tushar , ho dovuto fare anche apt-get install ntpdateil mio Ubuntu 14.04.

Pubblicare come risposta perché la reputazione non è sufficiente per i commenti.


0

Stavo anche cercando un modo non ntp / ntpd per ripristinare periodicamente l'orologio. Mi è piaciuta l'analisi dell'header di google.com ma ho scoperto che non funzionava su Ubuntu. Penso che funzionerà anche su un Raspberry Pi.

sudo date +"%d %b %Y %T %Z" -s "$(wget -qSO- --max-redirect=0 http://google.com 2>&1 | grep '^  Date:' | cut -d' ' -f 5-)"

Anche un'alternativa usando curl invece di wget.

sudo date +"%d %b %Y %T %Z" -s "$(curl -s --head http://google.com | grep '^Date:' | cut -d' ' -f 3-)"

Testato su PI con rete cellulare e risultati simili:

Using host & wget -- RCV: 1324 bytes SND: 581 bytes
Using host & curl -- RCV: 1318 bytes SND: 567 bytes

Nota Uso host per risolvere google.com in un indirizzo IP in modo da poter aprire solo quell'IP per la durata di questo comando con iptables.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.