Je fais tourner Ubuntu sur un système embarqué basé sur ARM qui ne dispose pas d'un RTC alimenté par une batterie. L'heure de réveil se situe quelque part en 1970. J'utilise donc le service NTP pour mettre à jour l'heure à l'heure actuelle.
J'ai ajouté la ligne suivante à /etc/rc.local
fichier :
sudo ntpdate -s time.nist.gov
Cependant, après le démarrage, il faut encore quelques minutes pour que l'heure soit mise à jour, période pendant laquelle je ne peux pas travailler efficacement avec les services suivants tar
y make
.
Comment puis-je forcer la mise à jour de l'horloge à un moment donné ?
UPDATE 1 : La méthode suivante (merci à Eric et Stephan) fonctionne bien en ligne de commande, mais ne met pas à jour l'horloge lorsqu'elle est utilisée /etc/rc.local
:
$ date ; sudo service ntp stop ; sudo ntpdate -s time.nist.gov ; sudo service ntp start ; date
Thu Jan 1 00:00:58 UTC 1970
* Stopping NTP server ntpd [ OK ]
* Starting NTP server [ OK ]
Thu Feb 14 18:52:21 UTC 2013
Qu'est-ce que je fais de mal ?
UPDATE 2 : J'ai essayé de suivre les quelques suggestions qui ont été faites en réponse à la première mise à jour, mais rien ne semble vraiment faire le travail demandé. Voici ce que j'ai essayé :
- Remplacer le serveur pour
us.pool.ntp.org
- Utiliser des chemins explicites vers les programmes
- Retirer le
ntp
service et de ne laisser quesudo ntpdate ...
enrc.local
- Retirer le
sudo
de la commande ci-dessus dansrc.local
En utilisant ce qui précède, la machine démarre toujours à 1970. Cependant, lorsque l'on effectue cette opération à partir de la ligne de commande une fois connecté (par le biais de ssh
), l'horloge est mise à jour dès que j'invoque la fonction ntpdate
.
La dernière chose que j'ai faite, c'est de retirer ça de rc.local
et passer un appel à ntpdate
dans mon .bashrc
fichier. Cela met à jour l'horloge comme prévu, et j'obtiens la véritable heure actuelle une fois que l'invite de commande est disponible.
Cependant Cela signifie que si la machine est allumée et qu'aucun utilisateur n'est connecté, l'heure n'est jamais mise à jour. Je peux, bien sûr, réinstaller le ntp
L'horloge est donc au moins mise à jour quelques minutes après le démarrage, mais nous sommes ensuite de retour à la case départ.
Alors, y a-t-il une raison pour laquelle placer le ntpdate
dans rc.local
n'effectue pas la tâche requise, tout en le faisant en .bashrc
fonctionne bien ?
5 votes
De [ici][1] :
ntpdate -s ntp.ubuntu.com
[1] : askubuntu.com/a/81301/1301625 votes
Remarquez le drapeau '-b' sur ntpdate. De la page de manuel de ntpdate : "Force le temps à être échelonné en utilisant l'appel système settimeofday(), plutôt que d'être pivoté (par défaut) en utilisant l'appel système adjtime(). Cette option doit être utilisée lorsqu'elle est appelée depuis un fichier de démarrage au moment du démarrage." De nombreuses réponses ci-dessous ne l'incluent pas, et cela fait peut-être partie du problème pour faire fonctionner les choses. Considérez que le drapeau '-B' mentionne que les décalages de plus de 128 ms peuvent prendre des heures à synchroniser en utilisant le mécanisme 'slew' par défaut.
0 votes
Il n'est pas nécessaire d'utiliser
sudo
dans les fichiers /etc/rc.locale ils sont déjà exécutés en tant que root.1 votes
timedatectl
mais askubuntu.com/questions/832646/