Raspberry Pi saknar en hårdvaruklocka. Hur tvingar jag NTPD att uppdatera datum / tid direkt efter varje start?
Jag kör Raspbian och Raspberry Pi är ansluten med en Ethernet -kabel.
Kommentarer
- Min gör redan det av vilken disto använder du?
- Raspbian Wheezy
- @Thorb Pi är ansluten med Ethernet-kabel / dhcp. Det får helt enkelt inte ett giltigt datum efter start, det tar en stund (10 till 45 minuter)
- Det kommer att göra det automatiskt, efter ett par minuter. Se till att du har ställt in det för att använda Master Clock på National Bureau of Standards, time.nist.gov som beskrivet här: raspberrypi.stackexchange.com/questions/68811/…
- Verkar inte man har ännu svarat på denna fråga tillfredsställande – dvs hur man synkroniserar tid via NTP efter en start (dvs. utan omstart).
Svar
Efter när jag letade runt fungerade den här metoden för mig. Som du vet har Raspberry Pi 3 NTP inaktiverat som standard. Så genom att bara skriva detta kommer NTP-stödet att aktiveras:
sudo timedatectl set-ntp True
Kontrollera resultatet med timedatectl status
Vid en varning kan du behöva köra sudo timedatectl set-local-rtc true
.
Kommentarer
- Tack, detta hjälpte mig äntligen och verkar vara rätt sätt, trots tidigare svar.
- Det är det bästa svaret, hjälpte mig mycket. Du kan använda ’ sudo ’ för att undvika att skriva ditt lösenord (användbart för skript som kör det). Vad är syftet med sekunder-kommandot? set-local-rtc
Svar
Gör ett apt-get install ntpdate
.
ntpdate
körs när ett Ethernet-gränssnitt tas upp och ställer in tiden från en ntp-server (se /etc/default/ntpdate
).
Om ntpd
körs kommer ntpdate inte att göra någonting, men ntpdate
körs före ntpd
vid start – så detta bör fungera för att ställa in tiden vid start så länge det finns en Ethernet-anslutning.
Kommentarer
- stock Raspbian kommer att ha allt detta redan.
- @scruss mine gjorde inte ’ t. (2013-02-09 wheezy rasbian)
- Min gjorde inte heller, var tvungen att göra det manuellt.
- Om det är rätt inställt kommer det att göra det automatiskt – även om det kan ta några minuter.
-
Linux raspberrypi 4.14.30-v7+ #1102 SMP Mon Mar 26 16:45:49 BST 2018 armv7l GNU/Linux
har inte ’ inte det också.
Svar
Om klockan är långt ifrån kan du behöva tvinga ntp att synkronisera genom att göra:
sudo /etc/init.d/ntp stop sudo ntpd -q -g sudo /etc/init.d/ntp start
Kommentarer
- Det returnerar felet ” sudo: ntpd: kommandot hittades inte ”
- ntpd måste vara installerat för att använda kommandot
- Det är installerat, jag är inte så okunnig 🙂
- Kan du besöka raspberrypi.stackexchange.com/questions/47542/… ? Jag har lagt upp detaljer där.
- Detta var absolut lösningen på mitt problem, men jag tyckte att det var tillfälligt tills jag startade om. Så småningom fick jag ett fel i avstängningen att det inte kunde ’ t uppdatera hwclock eftersom hw-klockan hade ett framtida datum (ingen aning om hur det hände). Men lösningen var en uppdateringskraft för hwclock. Det tvingade uppdateringen till den falska hårdvaruklockan och sedan vid start var tiden åtminstone nära den nuvarande så ntp kunde göra det ’ s jobb normalt.
Svar
Om du ställer in tidszonen i raspi-config
uppdaterar Raspberry Pi automatiskt tid vid start, om den är ansluten till internet.
-
sudo raspi-config
- Välj
Internationalisation Options
- Välj
I2 Change Timezone
- Välj ditt geografiska område
- Välj din närmaste stad
- Välj
Finish
- Välj
Yes
för att starta om nu
Kommentarer
- det fungerade bra för mig
-
I2 Change Timezone
alternativet ’ t finns längre - Det finns, åtminstone i Raspbian Buster.
- ” Internationaliseringsalternativ ” är heter nu ” Lokaliseringsalternativ ”
- ” närmaste stad ” är inte rätt sätt. du måste välja den stad där din tidszon tillhör, vilket kan vara närmast eller inte …
Svar
Se foruminlägg Tid synkroniseras inte på Pi 3 och med officiell dongel .
ntpd avger IP / UDP-paket med ToS-fält inställt på 0xc0. Så det är ganska likt det andra problemet jag (och många andra) har med Raspberry Pi3 när det drivs via ett internt Wi-Fi-gränssnitt.
Som en lösning, lägg till kommandot
/sbin/iptables -t mangle -I POSTROUTING 1 -o wlan0 -p udp --dport 123 -j TOS --set-tos 0x00
till filen
/etc/rc.local
före utgång 0-raden. Starta sedan om och kontrollera.
Kommentarer
- Jag hade samma problem som jag installerade RPi3 jag fick för XMas, och du löste mitt problem. Bra !!!
Svar
Denna fråga är tydligen ” återvunnet ” av någon anledning, och det verkar därför lämpligt att återvinna några gamla svar också 🙂
Året är nu 2021 …
Denna fråga ställdes 2013. ntpd
var tidtagningsprogrammet som ingick i Raspbian-distribution vid den tiden (wheezy
) . Det ändrades dock med stretch
distributionen 2017 när systemd-timesyncd
ersatte ntpd
. Skälen till denna förändring och några av de tekniska avvägningarna diskuterades i detta gamla svar för dem som är intresserade av sådana saker.
När det gäller frågan här, kanske den mest framträdande punkten i nuvarande miljö (efter- systemd
) är detta: Om du bestämmer dig för att installera ntpd
under din nuvarande Raspbian-distribution, vet att systemd-timesyncd
kommer ” att göra rätt ”! Den kontrollerar om det finns andra NTP-demoner och justerar dess beteende i enlighet därmed. det fungerar bara . Du kan läsa allt om det genom att ange detta på kommandoraden:
$ systemctl cat systemd-timesyncd
Notera de sista raderna:
# kör inte timesyncd om vi har en annan NTP-demon installerad
ConditionFileIsExecutable =! / usr / sbin / ntpd
ConditionFileIsExecutable =! / usr / sbin / openntpd
ConditionFileIsExecutable =! / Usr / sbin / chronyd
ConditionFileIsExecutable =! / Usr / sbin / VBoxService
Med andra ord: systemd-timesyncd
kontrollerar om någon av dessa alternativa tidstjänster körs på ditt system, och i så fall avvisar det artigt för dem att tillhandahålla dina tidtagningstjänster.
” tvingar ” ntpd
att uppdatera efter start ?!
Detta var OP ”s fråga. Svaret (2021) har inte ändrats: Det borde inte vara nödvändigt att göra detta i alla RPi-system – såvida inte någon har ändrat standardkonfigurationen ! Du kan verifiera detta på följande sätt:
$ timedatectl Local time: Wed 2021-01-13 00:25:33 GMT Universal time: Wed 2021-01-13 00:25:33 UTC RTC time: n/a Time zone: Europe/London (GMT, +0000) System clock synchronized: yes NTP service: active RTC in local TZ: no
Observera två saker:
-
System clock synchronized: yes
-
NTP service: active
Punkt 1. säger att din systemklocka är synkroniserad med vilken standardtidskälla som helst, och artikel 2. är nästan sant genom att RPi använder SNTP
som standard istället för NTP
( REF ); det vill säga detta betyder att RPi har en tidskälla och använder den.
Jag tror att ”s allt som behövs för en up-to- datumsvar 2021 , utom detta: läs man timedatectl
för att lära dig mer om dess funktioner, eller om TLDR har denna sida en anständig sammanfattning.
Kommentarer
- Systemklocka synkroniserad: nej
- @Arrow_Raider: Yer ’ punkten är ???
Svar
Det bör redan uppdatera tiden. NTPD-servern bör starta strax efter swap-filen och före SSHD.
Kontrollera din /etc/ntp.conf-fil för att se till att den är konfigurerad.
Den bör innehålla minst en server. Jag använder time.nrc.ca för min server.
Manuell sida för ntp.conf är här: http://linux.die.net/man/5/ntp.conf
Svar
Min sons Rasberry Pi uppdaterade inte tiden ur lådan och efter att ha försökt alla förslagen ovan kunde jag få den att uppdateras manuellt men inte automatiskt. Slutligen efter att ha tittat någon annanstans också utan framgång, fann jag att ntp.conf-filen som kom med Rasberry Pi hade följande rader kommenterade:
#restrict 127.0.0.1 #restrict ::1
Jag använde
sudo nano /etc/ntp.conf
i terminalen för att redigera ntp conf-filen till nu:
# Local users may interrogate the ntp server more closely. restrict 127.0.0.1 restrict ::1
Det löste problemet för oss. Den uppdateras med både WiFi och Ethernet-kabeln. Jag vet inte om den skulle uppdateras med WiFi utan ändringen till rc.local som föreslagits ovan, eftersom jag redan hade gjort den ändringen när jag hittade lösningen ovan och jag har inte ångrat den.
Svar
Jag hittade applikationen timedatectl
för att hjälpa mig när jag hade ett liknande problem. Det är installerad som standard och ”–help” ger en ganska bra och enkel översikt över hur du använder verktyget.
Obs: se till att din tidszon är korrekt inställd, vilket detta verktyg också kan göra.
Svar
Du behöver inte använda ntp för att lösa problemet. Det finns ett skript som läser datumet från en server och du behöver bara ställa in datumet som resultatet av det skriptet (din Raspberry Pi måste anslutas till internet). Sedan måste du köra det kommandot vid start.
Steg 1: Hämta datumet från en server.
sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d" " -f5-8)Z"
Steg 2: Kör kommandot vid start genom att lägga till det i filen /etc/rc.local
(Fungerade på Ubuntu 16.04).
sudo gedit /etc/rc.local
KREDITER:
1- https://askubuntu.com/a/655528/572294
2- https://askubuntu.com/a/1199/572294
Kommentarer
- Du kanske inte behöver använda
ntp
men det borde du göra. Det ’ är bättre, snabbare, mer exakt och branschstandard. Don ’ t gör upp dina egna konstiga saker när goda standarder finns. - Det hjälper inte ’ t mycket om din RasPi körs dygnet runt.
Svar
Jag hade ett liknande problem med en Pi som inte synkroniserades . Ingen av dessa lösningar fungerade. Visar sig att min nätverksmiljö blockerade NTP-porten (123). Lösningen för mig var
sudo apt install htpdate
hämtad från: https://www.raspberrypi.org/forums/viewtopic.php?t=222236
Som uppdaterar systemklockan via HTTP-samtal istället.
Svar
Detta är det tillvägagångssätt som jag slutade ta. Många av dessa svar tycktes indikera saker som bara inte kollade när jag tittade på mitt Raspian-system:
$ 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"
Jag hade inget som dykt upp i loggar som indikerar att timedatectl
gjorde någonting, eller att ntp
synkroniserades i NIC: s upp-tillstånd, eller att NTPD till och med var installerad / konfigurerad.
Till slut lade jag bara till detta i min /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..."
Och installerad ntp
:
$ sudo apt-get install ntp
Vilket resulterar i detta i /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...
Kommentarer
- Fungerar inte ’ t på minimal raspbian:
Failed to start ntp.service: Unit ntp.service not found.
Och ntpd finns inte heller ’. Pi vinner definitivt tid. (Jag ’ jag tittar på det här eftersom mina HTTPS-lockar misslyckas utan -k när de körs före det) - @StevenLu – Jag ’ Uppdaterar A ’ er för att även inkludera installationen av ntp.
- @StevenLu –
apt-get install ntp
Svar
Jag använder följande på standardbilden för att synkronisera tiden utan att installera ytterligare paket:
timedatectl set-local-rtc 0 timedatectl set-ntp 1 timedatectl status
Svar
Jag hittade detta någonstans på interwebben. Verkar fungera på Buster:
sudo timedatectl set-ntp false && sudo timedatectl set-time "$(date --iso-8601=seconds | cut -d "+" -f1 | tr T " ")" && sudo timedatectl set-ntp true
Jag är inte säker på om mellankommandot (set-time
) verkligen är behövs.