Come impostare Ubuntu per sincronizzare il mio orologio con un time server?


23

Vorrei che Ubuntu sincronizzasse automaticamente il mio orologio di sistema con un timeserver all'avvio.

Tuttavia, il mio PC non è connesso a Internet fino a quando non ho effettuato l'accesso (più 5-10 secondi per buona misura).

Come posso impostarlo per farlo?


2
Ci sono già ottime risposte qui che spiegano come installare ntpd in modo che il tuo computer si mantenga continuamente sincronizzato con i time server di Internet, ma volevo solo aggiungere che Ubuntu di default sincronizzerà il tempo con ntp.ubuntu.com ogni volta che arriva l'interfaccia di rete "su" (ad es. all'avvio del computer). Questo non sembra accadere nel tuo caso a causa del modo in cui ti connetti a Internet, ma altri lettori non dovrebbero presumere che Ubuntu non sincronizzi il tempo senza l'installazione di ntpd.

Eccone uno che spiega come impostarlo su time.nist.gov: askubuntu.com/questions/972799/…
SDsolar

Risposte:


32

Questo viene fatto con NTP, per il quale sono disponibili istruzioni . Fondamentalmente, dovrai installare un demone NTP. Sembra che ci siano diverse opzioni disponibili, ma quella "standard" è nel pacchetto ntp. Secondo le istruzioni alla pagina collegata,

sudo apt-get install ntp

otterrà tutto configurato per la sincronizzazione con il server NTP di Ubuntu.

EDIT : mi sono perso "all'avvio". In genere si consiglia di utilizzare ntpd per ottenere la sincronizzazione continua tra il sistema e il server, ma se si desidera veramente sincronizzare una sola volta, la risposta di mfisch sembra essere ciò che si sta cercando.


3
Penso che in generale sarebbe meglio solo avere ntpd sempre in esecuzione e non riuscire a connettersi quando non era online, non è affatto dannoso. Detto questo, anche il mio metodo dovrebbe funzionare;)
mfisch,

Sto bene che funzioni continuamente.
Nathan Osman,

1
George, fallo e basta. Speravo di rispondere alla tua "vera" domanda poiché la cosa più fastidiosa al mondo è porre una domanda come questa e avere tutte le risposte "perché vuoi farlo?"
mfisch,

Per Ubuntu 18.04 si applica più il consiglio di installare ntpd. Di default systemd-timesyncd.service sincronizzerà l'ora.
ernstkl

9

Se vai su "Sistema-> Amministrazione-> Ora e data", otterrai una GUI per impostare la data / ora.

È disponibile un'opzione per l'utilizzo dei time server. Se lo controlli e NTP non è installato, ti verrà chiesto se desideri installarlo. Basta fare clic su "Sì" e lasciarlo fare il suo lavoro :)


Hai dimenticato la cosa "avvio". NTP fa regolarmente il suo lavoro, il che significa che dovresti essere sincronizzato ogni volta che sei online ... Ma l'unico modo per essere sicuri è usare un qualche tipo di script come fornito da mfisch. Ora, ad essere onesti: una volta sincronizzato, ci sono poche possibilità che il tuo computer si incasini sul suo orologio. Quindi, se usi la sincronizzazione temporale predefinita e la lasci fare in background, dovresti andare bene per la maggior parte del tempo, senza dover fare altro.
Little Jawa,

Non è etichettato "Ora e data"?
Firefeather,

@Firefeather: potrebbe anche essere. Non ho un'interfaccia inglese, quindi non posso dirlo;)
Little Jawa

Ah, sciocco me, dimenticando l'internazionalizzazione. Il mio sistema en-us lo etichetta "Ora e data".
Firefeather,

6

Puoi farlo usando at e ntpdate . at è probabilmente già installato, ma ntpdate potrebbe non esserlo. (apt-get install ntpdate).

Per prima cosa crea un piccolo script che esegue ntpdate, chiamiamolo update_time.sh.

#!/bin/bash
ntpdate pool.ntp.org

Nel tuo file .bash_login (che potresti dover creare) aggiungi questo:

at -f ~/update_time.sh now + 1 minute

Questo dovrebbe fare quello che vuoi. È possibile modificare il ritardo che a usi che richiedono 5 minuti, 10 minuti etc.

EDIT: ho appena capito che per essere eseguito devi essere root ntpdate. Dovrai impostare il bit SUID sullo script update_time.sh che ho citato. Puoi farlo eseguendolo dal comando (deve essere eseguito una sola volta):

sudo chmod 4711 update_time.sh
sudo chown root update_time.sh

1
iirc Non è possibile impostare il suid su script .sh.
Broam,

Puoi fare direttamente il suid su ntpdate allora? Ciò compirebbe probabilmente la stessa cosa.
mfisch,

2
Perché l'uso at? E se eseguirai automaticamente ntpdate, perché non installare semplicemente il ntpservizio?
Reinier Post,

1
nota: ntpdate non è più installato di default su Ubuntu (16.04+) ed è stato deprecato a favore di timedatectl. timedatectl controlla il servizio timesyncd di systemd, che viene utilizzato per impostazione predefinita per la sincronizzazione dell'ora.
Corey Goldberg,

0

Poiché Ubuntu 16.04 timedatectl / timesyncd (che fanno parte di systemd) sostituisce la maggior parte di ntpdate / ntp. Vedi Sincronizzazione oraria .

Potrebbe essere necessario attivare la sincronizzazione dell'ora utilizzando:

$ sudo timedatectl set-ntp on

Se vuoi usare chrony:

  • Se hai bisogno di una sincronizzazione one-shot usa: $ chronyd -q

  • Se è necessario un controllo del tempo one-shot, senza impostare l'ora, utilizzare: $ chronyd -Q

  • Per la sincronizzazione continua, la soluzione consigliata è chrony:

chrony (d)

Il demone NTP chronyd calcola la deriva e l'offset dell'orologio di sistema e lo regola continuamente, quindi non ci sono correzioni di grandi dimensioni che potrebbero portare ad esempio a registri incoerenti. Il costo è un po 'di potenza di elaborazione e memoria, ma per un server moderno questo è generalmente trascurabile. Installazione

Per installare chrony, da un prompt del terminale inserire:

$ sudo apt install chrony

Potrebbe anche essere necessario attivare

sudo timedatectl set-ntp on

Aggiornamento: un altro metodo se quanto sopra non funziona è impostare un cron job da eseguire$ chronyd -q

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.