Comment forcer NTPD à mettre à jour la date / heure après le démarrage?

63

Le Raspberry Pi manque d'une horloge matérielle. Comment forcer NTPD à mettre à jour la date et l'heure immédiatement après chaque démarrage?

J'utilise Raspbian et le Raspberry Pi est connecté à l'aide d'un câble Ethernet .

Alessandro Da Rugna
la source
Le mien le fait déjà hors de la boîte. Quelle disto utilisez-vous?
Gerben
Raspbian Wheezy
Alessandro Da Rugna
fonctionne comme il est, d'une certaine manière
lenik
1
@Thorb Pi est connecté avec un câble Ethernet / DHCP. Il ne prend tout simplement pas une date valide après le démarrage, cela prend un certain temps (10 à 45 minutes)
Alessandro Da Rugna
1
Il le fera automatiquement, après quelques minutes. Assurez-vous d’avoir réglé l’horloge principale du Bureau national de la normalisation, time.nist.gov, comme décrit ici: raspberrypi.stackexchange.com/questions/68811/…
SDsolar

Réponses:

40

Faire un apt-get install ntpdate.

ntpdates’exécutera lorsqu’une interface Ethernet sera affichée et définira l’heure à partir d’un serveur NTP (voir /etc/default/ntpdate)

Si ntpdest en cours d'exécution, ntpdate ne fera rien, mais ntpdates'exécutera avant le ntpddémarrage - cela devrait donc permettre de définir l'heure au démarrage tant qu'il existe une connexion Ethernet.

non
la source
stock Raspbian aura déjà tout cela.
scruss
7
@scruss le mien n'a pas. (2013-02-09 wheezy rasbian)
Pete Kirkham
1
Le mien non plus, devait le faire manuellement.
vaindil
S'il est configuré correctement, il le fera automatiquement - bien que cela puisse prendre quelques minutes.
SDsolar
Linux raspberrypi 4.14.30-v7+ #1102 SMP Mon Mar 26 16:45:49 BST 2018 armv7l GNU/Linuxje ne l'avais pas aussi.
emix
36

Si votre horloge est complètement éteinte, vous devrez peut-être forcer ntp à se synchroniser en procédant comme suit:

sudo /etc/init.d/ntp stop
sudo ntpd -q -g
sudo /etc/init.d/ntp start
thaspius
la source
1
Il renvoie l'erreur "sudo: ntpd: commande introuvable"
Pygmalion
1
ntpd doit être installé pour utiliser la commande
thaspius
3
Il est installé, je ne suis pas ignorant :)
Pygmalion
Pourriez-vous s'il vous plaît visitez raspberrypi.stackexchange.com/questions/47542/… ? J'ai posté des détails là-bas.
Pygmalion
3
C'était absolument la solution à mon problème, mais je l'ai trouvé temporaire jusqu'à ce que je redémarre. Lors de l’arrêt, j’ai détecté une erreur, à savoir qu’il ne pouvait pas mettre à jour le hwclock car l’horloge du hw avait une date ultérieure (aucune idée de la façon dont cela s’est passé). Mais la solution était une force de mise à jour hwclock. Cela a forcé la mise à jour vers la fausse horloge matérielle, puis au démarrage, l’heure était au moins proche du niveau actuel, de sorte que NTP puisse faire son travail normalement.
Piwaf
34

Après avoir cherché, cette méthode a fonctionné pour moi. Comme vous le savez, le Raspberry Pi 3 a NTP désactivé par défaut. Donc, en tapant simplement ceci, le support NTP sera activé:

sudo timedatectl set-ntp True

Vérifier le résultat avec timedatectl status

En cas d’avertissement, vous devrez peut-être sudo timedatectl set-local-rtc trueaussi courir .

Ariyankj
la source
Merci, cela m'a finalement aidé, et semble être la bonne façon, malgré les réponses précédentes.
CharlieS
1
C'est la meilleure réponse, m'a beaucoup aidé. Vous pouvez utiliser 'sudo' pour éviter de saisir votre mot de passe (utile pour les scripts qui l'exécutent). Quel est le but de la commande secondes? set-local-rtc
Arad
12

Si vous définissez le fuseau horaire dans raspi-configle Raspberry Pi, l’heure sera automatiquement mise à jour au démarrage, si elle est connectée à Internet.

  1. sudo raspi-config
  2. Sélectionner Internationalisation Options
  3. Sélectionner I2 Change Timezone
  4. Sélectionnez votre zone géographique
  5. Sélectionnez votre ville la plus proche
  6. Sélectionner Finish
  7. Sélectionnez Yespour redémarrer maintenant
mwd27
la source
cela a bien fonctionné pour moi
AlexG
I2 Change TimezoneL’option n’existe plus
mrded
12

Voir le message du forum Le temps ne se synchronise pas sur le Pi 3 et avec le dongle officiel .

ntpd émet des paquets IP / UDP avec le champ ToS défini sur 0xc0. Cela ressemble donc beaucoup à l’autre problème que j’ai (avec beaucoup d’autres) à propos de Raspberry Pi3 lorsqu’il est exploité via une interface interne Wi-Fi.

Pour contourner le problème, ajoutez la commande

/sbin/iptables -t mangle -I POSTROUTING 1 -o wlan0 -p udp --dport 123 -j TOS --set-tos 0x00

au dossier

/etc/rc.local

avant la ligne de sortie 0. Ensuite, redémarrez et vérifiez.

pradeep
la source
1
J'ai eu le même problème en installant le RPi3 que j'avais pour XMas et vous avez résolu mon problème. Génial !!!
Jfmessier
8

Il devrait déjà mettre à jour l'heure. Le serveur NTPD doit démarrer juste après le fichier d'échange et avant SSHD.

Vérifiez votre fichier /etc/ntp.conf pour vous assurer qu'il est configuré.

Il devrait répertorier au moins un serveur. J'utilise time.nrc.ca pour mon serveur.

La page de manuel pour ntp.conf est ici: http://linux.die.net/man/5/ntp.conf

Rod MacPherson
la source
3

Rasberry Pi de mon fils ne mettrait pas à jour le temps hors de la boîte et après avoir essayé toutes les suggestions ci-dessus, je pouvais le faire mettre à jour manuellement mais pas automatiquement. Enfin, après avoir cherché ailleurs sans succès, j’ai trouvé que les lignes suivantes étaient commentées dans le fichier ntp.conf fourni avec Rasberry Pi:

#restrict 127.0.0.1
#restrict ::1

j'ai utilisé

sudo nano /etc/ntp.conf

dans le terminal pour éditer le fichier ntp conf pour être maintenant:

# Local users may interrogate the ntp server more closely. 
restrict 127.0.0.1
restrict ::1

Cela a résolu le problème pour nous. Il met à jour avec le WiFi et le câble Ethernet. Je ne sais pas si le WiFi sera mis à jour sans le changement de rc.local suggéré ci-dessus, car au moment où j'ai trouvé la solution ci-dessus, j'avais déjà apporté cette modification et je ne l'ai pas annulée.

deLabe
la source
2

J'ai trouvé l' timedatectlapplication pour m'aider alors que je rencontrais un problème similaire. Il est installé par défaut et '--help' donne un bon aperçu de l'utilisation de l'outil.

Remarque: assurez-vous que votre fuseau horaire est correctement défini, ce que cet outil peut également faire.

Adam Parsons
la source
1

C'est l'approche que j'ai finalement adoptée. Beaucoup de ces réponses semblaient indiquer des choses qui n'avaient pas été vérifiées lorsque j'ai examiné mon système Raspian:

$ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"
NAME="Raspbian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

Je n'avais aucun timedatectlélément dans les journaux indiquant qu'il faisait quoi que ce soit, ou qu'il ntpse synchronisait lorsque la carte réseau était active, ou que NTPD était même installé / configuré.

En fin de compte, j'ai simplement ajouté ceci à mon /etc/rc.local:

$ cat /etc/rc.local
logger "Beginning force syncing NTP..."
service ntp stop
ntpd -gq
service ntp start
logger "Finished force syncing NTP..."

Et installé ntp:

$ sudo apt-get install ntp

Ce qui en résulte en /var/log/syslog:

Aug  5 09:10:20 pi-hole ntp[526]: Starting NTP server: ntpd.
Aug  5 09:10:20 pi-hole ntpd[555]: proto: precision = 1.458 usec (-19)
Aug  5 09:10:20 pi-hole ntpd[555]: Listen and drop on 0 v6wildcard [::]:123
Aug  5 09:10:20 pi-hole ntpd[555]: Listen and drop on 1 v4wildcard 0.0.0.0:123
Aug  5 09:10:20 pi-hole ntpd[555]: Listen normally on 2 lo 127.0.0.1:123
Aug  5 09:10:20 pi-hole ntpd[555]: Listen normally on 3 eth0 192.168.1.85:123
Aug  5 09:10:20 pi-hole ntpd[555]: Listen normally on 4 lo [::1]:123
Aug  5 09:10:20 pi-hole ntpd[555]: Listen normally on 5 eth0 [fe80::f5ea:7663:4ec:784d%2]:123
Aug  5 09:10:20 pi-hole ntpd[555]: Listening on routing socket on fd #22 for interface updates
Aug  5 09:10:21 pi-hole ntpd[555]: ntpd exiting on signal 15 (Terminated)
Aug  5 09:10:21 pi-hole ntp[661]: Stopping NTP server: ntpd.
Aug  5 09:10:21 pi-hole ntpd[674]: ntpd [email protected] Sat Mar 10 18:03:33 UTC 2018 (1): Starting
Aug  5 09:10:21 pi-hole ntpd[674]: Command line: ntpd -gq
Aug  5 09:10:21 pi-hole ntpd[674]: proto: precision = 0.625 usec (-21)
Aug  5 09:10:21 pi-hole ntpd[674]: Listen and drop on 0 v6wildcard [::]:123
Aug  5 09:10:21 pi-hole ntpd[674]: Listen and drop on 1 v4wildcard 0.0.0.0:123
Aug  5 09:10:21 pi-hole ntpd[674]: Listen normally on 2 lo 127.0.0.1:123
Aug  5 09:10:21 pi-hole ntpd[674]: Listen normally on 3 eth0 192.168.1.85:123
Aug  5 09:10:21 pi-hole ntpd[674]: Listen normally on 4 lo [::1]:123
Aug  5 09:10:21 pi-hole ntpd[674]: Listen normally on 5 eth0 [fe80::f5ea:7663:4ec:784d%2]:123
Aug  5 09:10:21 pi-hole ntpd[674]: Listening on routing socket on fd #22 for interface updates
Aug  5 09:10:34 pi-hole ntpd[674]: Soliciting pool server 198.98.57.16
Aug  5 09:10:35 pi-hole ntpd[674]: Soliciting pool server 74.82.59.149
Aug  5 09:10:36 pi-hole ntpd[674]: Soliciting pool server 23.131.160.7
Aug  5 09:10:36 pi-hole ntpd[674]: Soliciting pool server 52.37.26.163
Aug  5 09:10:36 pi-hole ntpd[674]: Soliciting pool server 204.2.134.163
Aug  5 09:10:36 pi-hole ntpd[674]: Soliciting pool server 96.126.100.203
Aug  5 09:10:36 pi-hole ntpd[674]: Soliciting pool server 199.223.248.101
Aug  5 09:10:36 pi-hole ntpd[674]: Soliciting pool server 66.228.42.59
Aug  5 09:10:36 pi-hole ntpd[674]: Soliciting pool server 208.75.89.4
Aug  5 09:10:37 pi-hole ntpd[674]: Soliciting pool server 204.2.134.164
Aug  5 09:10:37 pi-hole ntpd[674]: Soliciting pool server 104.236.116.147
Aug  5 09:10:38 pi-hole ntpd[674]: Soliciting pool server 204.9.54.119
Aug  5 09:10:48 pi-hole ntpd[674]: ntpd: time set +6.769186 s
Aug  5 09:10:49 pi-hole ntpd[853]: ntpd [email protected] Sat Mar 10 18:03:33 UTC 2018 (1): Starting
Aug  5 09:10:49 pi-hole ntpd[853]: Command line: /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 111:114
Aug  5 09:10:49 pi-hole ntp[844]: Starting NTP server: ntpd.
Aug  5 09:10:49 pi-hole ntpd[856]: proto: precision = 0.625 usec (-21)
Aug  5 09:10:49 pi-hole ntpd[856]: Listen and drop on 0 v6wildcard [::]:123
Aug  5 09:10:49 pi-hole ntpd[856]: Listen and drop on 1 v4wildcard 0.0.0.0:123
Aug  5 09:10:49 pi-hole ntpd[856]: Listen normally on 2 lo 127.0.0.1:123
Aug  5 09:10:49 pi-hole ntpd[856]: Listen normally on 3 eth0 192.168.1.85:123
Aug  5 09:10:49 pi-hole ntpd[856]: Listen normally on 4 lo [::1]:123
Aug  5 09:10:49 pi-hole ntpd[856]: Listen normally on 5 eth0 [fe80::f5ea:7663:4ec:784d%2]:123
Aug  5 09:10:49 pi-hole ntpd[856]: Listening on routing socket on fd #22 for interface updates
Aug  5 09:10:49 pi-hole root: Finished force syncing NTP...
slm
la source
Ne fonctionne pas sur Raspbian minimal: Failed to start ntp.service: Unit ntp.service not found.Et ntpd n'existe pas non plus. Le Pi gagne définitivement du temps. (Je regarde ça parce que mes boucles HTTPS échouent sans -k lorsqu'elles étaient exécutées auparavant)
Steven Lu
@StevenLu - Je mettrai à jour A'er pour inclure également l'installation de ntp.
slm
@StevenLu -apt-get install ntp
slm
1

Vous n'avez pas besoin d'utiliser NTP pour résoudre le problème. Il existe un script qui lit la date sur un serveur et il vous suffit de définir la date pour qu'elle soit le résultat de ce script (votre Raspberry Pi doit être connecté à Internet). Ensuite, vous devez exécuter cette commande au démarrage.

Étape 1: Récupérez la date d'un serveur.

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

Étape 2: Exécutez la commande au démarrage en l'ajoutant au fichier /etc/rc.local(travail sous Ubuntu 16.04).

sudo gedit /etc/rc.local

CRÉDITS:

1- https://askubuntu.com/a/655528/572294

2- https://askubuntu.com/a/1199/572294

Amjad Abujamous
la source
0

J'utilise les éléments suivants sur l'image par défaut pour synchroniser l'heure sans installer de packages supplémentaires:

timedatectl set-local-rtc 0
timedatectl set-ntp 1
timedatectl status
Wu Haa
la source