Comment configurer Ubuntu pour synchroniser mon horloge avec un serveur de temps?

23

Je voudrais qu'Ubuntu synchronise automatiquement mon horloge système avec un serveur de temps au démarrage.

Cependant, mon PC n'est connecté à Internet qu'après m'être connecté (plus 5 à 10 secondes pour faire bonne mesure).

Comment puis-je le configurer pour ce faire?

Nathan Osman
la source
2
Il y a déjà d'excellentes réponses ici qui expliquent comment installer ntpd pour que votre ordinateur se synchronise en permanence avec les serveurs de temps Internet, mais je voulais juste ajouter que par défaut Ubuntu synchronisera l'heure avec ntp.ubuntu.com chaque fois que votre interface réseau arrivera "up" (par exemple lorsque vous démarrez votre ordinateur). Cela ne semble pas se produire dans votre cas en raison de la façon dont vous vous connectez à Internet, mais les autres lecteurs ne doivent pas supposer qu'Ubuntu ne synchronise pas l'heure sans que ntpd soit installé.
En voici un qui explique comment le régler sur time.nist.gov: askubuntu.com/questions/972799/…
SDsolar

Réponses:

32

Cela se fait avec NTP, pour lequel des instructions sont disponibles. Fondamentalement, vous devrez installer un démon NTP. Il semble y avoir plusieurs choix mais celui "standard" est dans le package ntp. Selon les instructions de la page liée,

sudo apt-get install ntp

obtiendra tout configuré pour se synchroniser avec le serveur NTP d'Ubuntu.

EDIT : j'ai raté "au démarrage". Il est généralement recommandé d'utiliser ntpd pour obtenir une synchronisation continue entre votre système et le serveur, mais si vous ne voulez vraiment synchroniser qu'une seule fois, la réponse de mfisch semble être ce que vous recherchez.

David Z
la source
3
Je pense qu'en général, il vaudrait mieux que ntpd soit toujours en cours d'exécution et qu'il ne parvienne pas à se connecter lorsqu'il n'était pas en ligne, ce n'est en aucun cas dangereux. Cela dit, ma méthode devrait également fonctionner;)
mfisch
Je suis d'accord avec le fait qu'il fonctionne en continu.
Nathan Osman
1
George, fais juste ça. J'espérais répondre à votre "vraie" question car la chose la plus ennuyeuse au monde est de poser une question comme celle-ci et d'avoir toutes les réponses "pourquoi voulez-vous faire ça?"
mfisch
Pour Ubuntu 18.04, les conseils pour installer ntpd plus s'appliquent. Par défaut, systemd-timesyncd.service synchronisera l'heure.
ernstkl
9

Si vous allez dans "Système-> Administration-> Heure et date", vous obtiendrez une interface graphique pour définir la date / heure.

Une option est fournie pour l'utilisation des serveurs de temps. Si vous le cochez et que NTP n'est pas installé, il vous demandera si vous souhaitez l'installer. Cliquez simplement sur "oui" et laissez-le faire son travail :)

Little Jawa
la source
J'ai oublié la chose "démarrage". NTP fait son travail régulièrement, ce qui signifie que vous devez se synchroniser chaque fois que vous êtes en ligne ... Mais la seule façon de vous assurer est d'utiliser une sorte de script tel que fourni par mfisch. Maintenant, pour être honnête: une fois synchronisé, il y a peu de chances que votre ordinateur soit perturbé par son horloge. Donc, si vous utilisez la synchronisation de l'heure par défaut et que vous la laissez le faire en arrière-plan, vous devriez être bon d'aller la plupart du temps, sans rien faire de plus.
Little Jawa
N'est-ce pas étiqueté "Heure et date"?
Firefeather
@Firefeather: c'est possible. Je n'ai pas d'interface en anglais, donc je ne peux pas le dire;)
Little Jawa
Ah, idiot moi, oubliant l'internationalisation. Mon système en-us le nomme «Heure et date».
Firefeather
6

Vous pouvez le faire en utilisant at et ntpdate . at est probablement déjà installé, mais ntpdate ne l'est peut-être pas. (apt-get install ntpdate).

Créez d'abord un petit script qui exécute ntpdate, appelons-le update_time.sh.

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

Dans votre fichier .bash_login (que vous devrez peut-être créer), ajoutez ceci:

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

Cela devrait faire ce que vous voulez. Vous pouvez modifier le retard à usages à 5 minutes, 10 minutes , etc.

EDIT: Je viens de réaliser que vous aurez besoin d'être root pour fonctionner ntpdate. Vous devrez définir le bit SUID sur le script update_time.sh que j'ai mentionné. Vous pouvez le faire en exécutant ceci à partir de la commande (ne doit être exécuté qu'une seule fois):

sudo chmod 4711 update_time.sh
sudo chown root update_time.sh
mfisch
la source
1
iirc Vous ne pouvez pas définir suid sur des scripts .sh.
Broam
Pouvez-vous faire le suid sur ntpdate directement alors? Cela accomplirait probablement la même chose.
mfisch
2
Pourquoi utiliser at? Et si vous allez exécuter automatiquement ntpdate, pourquoi ne pas simplement installer le ntpservice?
Reinier Post
1
note: ntpdate n'est plus installé par défaut sur Ubuntu (16.04+) et a été déconseillé au profit de timedatectl. timedatectl contrôle le service timesyncd de systemd, qui est utilisé par défaut pour la synchronisation de l'heure.
Corey Goldberg
0

Depuis Ubuntu 16.04 timedatectl / timesyncd (qui font partie de systemd) remplacent la plupart de ntpdate / ntp. Voir Synchronisation horaire .

Vous devrez peut-être activer la synchronisation horaire à l'aide de:

$ sudo timedatectl set-ntp on

Si vous souhaitez utiliser chrony:

  • Si vous avez besoin d'une synchronisation en une seule fois, utilisez: $ chronyd -q

  • Si vous avez besoin d'une vérification ponctuelle de l'heure, sans définir l'utilisation de l'heure: $ chronyd -Q

  • Pour une synchronisation continue, la solution recommandée est chrony:

chrony (d)

Le démon NTP chronyd calcule la dérive et le décalage de votre horloge système et l'ajuste en continu, il n'y a donc pas de grandes corrections qui pourraient conduire à des journaux incohérents par exemple. Le coût est un peu de puissance de traitement et de mémoire, mais pour un serveur moderne, cela est généralement négligeable. Installation

Pour installer chrony, à partir d'une invite de terminal, entrez:

$ sudo apt install chrony

Vous devrez peut-être également activer

sudo timedatectl set-ntp on

Mise à jour: une autre méthode si ce qui précède ne fonctionne pas consiste à définir un travail cron à exécuter$ chronyd -q

JBaczuk
la source