J'utilise Ubuntu sur un système intégré basé sur ARM, dépourvu de RTC sauvegardé sur batterie. L’heure de réveil est quelque part au cours de 1970. Ainsi, j’utilise le service NTP pour mettre à jour l’heure à l’heure actuelle.
J'ai ajouté la ligne suivante au /etc/rc.local
fichier:
sudo ntpdate -s time.nist.gov
Cependant, après le démarrage, la mise à jour de l'heure prend encore quelques minutes, période au cours de laquelle je ne peux pas travailler efficacement avec tar
et make
.
Comment puis-je forcer une mise à jour de l'horloge à un moment donné?
UPDATE 1: Ce qui suit (merci à Eric et Stephan) fonctionne bien en ligne de commande, mais ne parvient pas à mettre à jour l'horloge lorsqu'il est inséré /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 mal?
MISE À JOUR 2: J'ai essayé de suivre les quelques suggestions formulées en réponse à la 1ère mise à jour, mais rien ne semble réellement faire le travail comme il se doit. Voici ce que j'ai essayé:
- Remplacez le serveur pour
us.pool.ntp.org
- Utiliser des chemins explicites vers les programmes
- Supprimez le
ntp
service complètement et laissez justesudo ntpdate ...
dansrc.local
- Supprimer la
sudo
de la commande ci-dessus dansrc.local
En utilisant ce qui précède, la machine démarre toujours à 1970. Cependant, lorsque vous le faites depuis la ligne de commande une fois connecté (via ssh
), l'horloge est mise à jour dès que j'appelle ntpdate
.
La dernière chose que j'ai faite a été d'enlever cette information rc.local
et de la placer ntpdate
dans mon .bashrc
dossier. Cela met à jour l'horloge comme prévu et j'obtiens l'heure actuelle réelle 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 ne reçoit jamais de mises à jour. Je peux bien sûr réinstaller le ntp
service afin que l'horloge soit au moins mise à jour dans les minutes qui suivent le démarrage, mais nous revenons à la case 1.
Alors, y a-t-il une raison pour laquelle placer la ntpdate
commande dans rc.local
n'exécute pas la tâche requise, alors que cela .bashrc
fonctionne correctement?
ntpdate -s ntp.ubuntu.com
[1]: askubuntu.com/a/81301/130162sudo
fichiers /etc/rc.locale .. ils sont déjà exécutés en tant que root.timedatectl
, mais askubuntu.com/questions/832646/…Réponses:
Le
ntp
service est probablement en cours d' exécution, c'est pourquoi ilntpdate
est impossible d'ouvrir le socket (port UDP 123) et de se connecter au serveur NTP.Essayez depuis la ligne de commande:
Si vous souhaitez
/etc/rc.local
utiliser ceci, utilisez ce qui suit:la source
service
rc.local et cron, mais j’ai réussi à le réparer en utilisant /etc/init.d/xxx. En fait, je pense que vous n’avez pas à donner le chemin complet àntpdate
, j’aime utiliser des chemins complets dans les scripts pour être sûr que le bon fichier sera trouvé.us.pool.ntp.org
est plus sensible.-u
option, vous n'avez pas besoin d'arrêter le service NTP:sudo ntpdate -u time.nist.gov
Au lieu de ntpdate (qui est obsolète ), utilisez
Le
-gq
indique au démon ntp de corriger l'heure indépendamment de offset (g
) et de quitter immédiatement (q
) après avoir réglé l'heure.la source
ntpd
page de manuel, je ne sais pas comment cela force une mise à jour?sudo ntpd -gq
ne sort pas! Je suis sur 14.10 et je dois CTRL + C pour continuer ... ou combien de temps est-il censé prendre?sudo service ntp...
tosudo service ntpd...
.Utilisez sntp pour régler l'heure immédiatement. Par exemple:
Les nombres après -s peuvent être n’importe quel serveur de temps ntp, celui-ci étant NIST en pi. Collins, Colorado.
la source
Comme d'autres l'ont fait remarquer, la meilleure solution consiste à indiquer à ntpd de ne pas tenir compte du seuil de panique, qui est de 1 000 secondes par défaut. Vous pouvez configurer le seuil de panique de deux manières:
/etc/default/ntp
et assurez-vous que l'option -g est présente.tinker panic 0
le en hautJusqu’à présent, c’est essentiellement ce que d’autres ont recommandé, mais il ya encore une étape à franchir. Installez le programme fake-hwclock:
Avec fake-hwclock installé, votre machine ne démarrera pas, pensant qu’elle est à nouveau en 1970. Lorsque votre ordinateur démarre, il définira son horloge sur l'horodatage écrit par fake-hwclock lors du dernier redémarrage / arrêt. Cela signifie que vous pouvez avoir une horloge quelque peu correcte au cas où il y aurait des problèmes de réseau au démarrage.
la source
-g
semblait ne rien faire pour moi (à la ligne de commande, je n'ai pas/etc/default/ntp
), mais en ajoutanttinker panic 0
àntp.conf
travaillétinker panic 0
semble définitivement avoir travaillé si.ntpdate est un programme différent du net dameon. NTPDate est probablement erroné au démarrage car ntpd est exécuté sur ce socket.
À partir de la ligne de commande, exécutez
Vous pouvez également désinstaller ntpd tous ensemble (apt-get remove ntp) et ajouter un script cron pour utiliser ntpdate toutes les heures environ.
MISE À JOUR
Le service ntp n'aura probablement pas de valeur significative pour vous sur ce système, alors supprimez-le d'abord.
Maintenant, ajoutez la commande:
à
/etc/rclocal
Redémarrer. Devrait être bon à ce point.
la source
Utilisez
timedatectl
(unité de service systemd) pour régler l’heure.ntp
est obsolète.Vous pouvez vérifier l’heure de la mise à jour en lisant les journaux avec
journalctl -xe | tail
Référence
man timesyncd.conf
la source
si tout ce que vous voulez faire est de régler l'horloge une fois, simple
la source
La bonne façon de faire ceci sur un système Debian / Mint / Ubuntu (ou un autre dérivé de Debian) est d’avoir la ligne
dans le fichier
Cela garantit que lorsque ntpd est lancé à partir du script /etc/init.d/ntp, il s'exécute avec l'option "-g", à savoir
pour permettre à ntpd de corriger l'heure système lorsqu'il y a plus de 1000 secondes, par exemple lorsque l'heure système est le 1er janvier 1970 au démarrage, car il n'y a pas de RTC matériel.
la source
/etc/default/ntp
, mais le temps n'était pas synchronisé.tlsdate
définit l'horloge locale en se connectant de manière sécurisée avec TLS à des serveurs distants et en extrayant l'heure distante de la négociation sécurisée. Contrairement àntpdate
,tlsdate
utilise TCP, par exemple en se connectant à un service distant compatible HTTPS ou TLS, et fournit une protection contre les adversaires qui tentent de vous envoyer des informations de temps malveillantes.la source
Notez que certains systèmes actuels basés sur Ubuntu n'utilisent même pas le service NTP par défaut maintenant. Sur ma machine Linux Mint 19 (Ubuntu 18.04), le temps est conservé par
systemd-timesyncd
.Donc, pour obtenir une heure à jour après la perte de synchronisation, je lance simplement
Depuis 15.04, Ubuntu utilise systemd par défaut. Par conséquent, les systèmes critiques comme le temps sont gérés par systemd. Pour trouver le service utilisé par votre système, exécutez quelque chose comme
Pour TechJS le 16.04, le service était
ntp
. Pour moi sur Ubuntu 18.04 (Mint 19), le service estsystemd-timesyncd
. Fait intéressant, je me suis connecté à un serveur 16.04 que je possède et qui l’utilisesystemd-timesyncd
également.la source
Essayez d'utiliser l'
-b
option pour avancer l'heure.la source
1 Jan 00:04:11 ntpdate[2226]: the NTP socket is in use, exiting
. Cependant, je pense avoir déjà essayé cela avantrc.local
mais cela n’a pas aidé.ntpdate -b <ipaddress>
Bien,
Je cours un Raspbian (Debian Wheezy) sur mon Raspberry Pi, qui n'a pas le hwclock. J'ai trouvé pratique d'écrire un petit script et de l'exécuter après la mise à jour de mon interface Internet, afin d'être sûr que dès que le réseau sera disponible, l'horloge sera mise à jour.
D'abord, vérifiez que vous avez le
ntpdate
paquet en cours d'exécutionVous devez ajouter ce qui suit dans votre
/etc/network/interfaces
(il ne s'agit sûrementeth0
que d'un exemple):Et créez le script suivant dans
/usr/local/sbin/update-time.sh
(n'oubliez pas de le rendre exécutable parchmod
):la source
Les algorithmes ntpd ignorent les décalages d'échantillons supérieurs à 128 ms, à moins que l'intervalle pendant lequel aucun décalage d'échantillon [valeur absolue] ne soit inférieur à 128 ms ne dépasse 900 secondes. Le premier échantillon suivant, quel que soit le décalage, fait avancer l'horloge jusqu'à l'heure indiquée. En pratique, cela réduit le taux de fausse alarme lorsque l'horloge est avancée par erreur jusqu'à une incidence extrêmement basse.
Normalement, ntpd se ferme si le décalage dépasse la limite de sécurité, qui est de 1000 s par défaut. Ceci peut être désactivé avec l'option -g:
-g Normalement, ntpd se ferme si le décalage dépasse la limite de sécurité, qui est de 1000 s par défaut. Si la limite d'intégrité est définie sur zéro, aucune vérification d'intégrité n'est effectuée et tout décalage est acceptable. Cette option annule la limite et permet de définir le temps sur n’importe quelle valeur sans restriction. Cependant, cela ne peut arriver qu'une fois. Après cela, ntpd se fermera si la limite est dépassée. Cette option peut être utilisée avec l'option -q.
tous deux de http://doc.ntp.org/4.1.0/ntpd.htm
-Jonathan Natale
la source
Si vous pouvez vous permettre d'attendre le temps qu'il faudra avant que votre système soit synchronisé, vous pouvez utiliser la
ntp-wait
commande suivante:la source
Si vous êtes sur systemd, vous pouvez utiliser cette commande:
Et puis le temps est mis à jour dans les 10-15 secondes.
Testé sur ubuntu mate 16.04
la source
ntpd
etntpdate
exécuté par défaut en utilisant un port restreint (UDP 123). Si vous êtes derrière un pare-feu,ntpd
cela ne fonctionnera jamais, maisntpdate
peut fonctionner avec l'-u
option. Par exemple:ntpdate -u 0.ubuntu.pool.ntp.org
ou lesntpdate -u time.nist.gov
deux devraient fonctionner correctement.la source