วิธีบังคับให้ NTPD อัปเดตวันที่ / เวลาหลังจากบูต


63

Raspberry Pi ไม่มีนาฬิกาฮาร์ดแวร์ ฉันจะบังคับให้ NTPD อัปเดตวันที่ / เวลาทันทีหลังจากบูตทุกครั้งได้อย่างไร

ฉันใช้Raspbianและ Raspberry Pi เชื่อมต่อโดยใช้สายEthernet


ฉันทำอย่างนั้นแล้วนอกกรอบ คุณใช้ disto อะไร
Gerben

Raspbian Wheezy
Alessandro Da Rugna

ทำงานอย่างที่มันเป็นอย่างใด
lenik

1
@Thorb Pi เชื่อมต่อกับสายอีเธอร์เน็ต / dhcp มันไม่ได้รับวันที่ที่ถูกต้องหลังจากการบูทใช้เวลาสักครู่ (10 ถึง 45 นาที)
Alessandro Da Rugna

1
มันจะทำโดยอัตโนมัติหลังจากผ่านไปสองสามนาที ให้แน่ใจว่าคุณได้ตั้งค่าให้ใช้นาฬิกาหลักที่สำนักงานมาตรฐานแห่งชาติ time.nist.gov ตามที่อธิบายไว้ที่นี่: raspberrypi.stackexchange.com/questions/68811/…
SDsolar

คำตอบ:


40

apt-get install ntpdateทำ

ntpdateจะทำงานเมื่อมีการต่อเชื่อมอีเธอร์เน็ตและตั้งเวลาจากเซิร์ฟเวอร์ ntp (ดู/etc/default/ntpdate)

หากntpdใช้งานอยู่ ntpdate จะไม่ทำอะไรเลย แต่ntpdateจะทำงานก่อนการntpdบูทเครื่อง - ดังนั้นจึงควรกำหนดเวลาในการบูทเครื่องเมื่อมีการเชื่อมต่ออีเธอร์เน็ต


หุ้น Raspbian จะมีทั้งหมดนี้แล้ว
scruss

7
@scruss เหมืองไม่ได้ (2013-02-09 rasbian wheezy)
Pete Kirkham

1
ฉันยังไม่ได้ต้องทำด้วยตนเอง
vaindil

หากตั้งค่าไว้ถูกต้องระบบจะดำเนินการโดยอัตโนมัติ - แม้ว่าอาจใช้เวลาสักครู่
SDsolar

Linux raspberrypi 4.14.30-v7+ #1102 SMP Mon Mar 26 16:45:49 BST 2018 armv7l GNU/Linuxไม่มีมันด้วย
emix

36

หากนาฬิกาของคุณปิดคุณอาจต้องบังคับให้ ntp ซิงค์โดยทำดังนี้

sudo /etc/init.d/ntp stop
sudo ntpd -q -g
sudo /etc/init.d/ntp start

1
มันกลับข้อผิดพลาด "sudo: ntpd: ไม่พบคำสั่ง"
Pygmalion

1
ต้องติดตั้ง ntpd เพื่อใช้คำสั่ง
thaspius

3
มันจะติดตั้งผมไม่ได้ว่าไม่รู้ :)
Pygmalion

คุณช่วยไปที่raspberrypi.stackexchange.com/questions/47542/ ได้ไหม ฉันโพสต์รายละเอียดที่นั่น
Pygmalion

3
นี่เป็นวิธีแก้ปัญหาของฉันอย่างแน่นอน แต่ฉันพบว่าเป็นการชั่วคราวจนกว่าฉันจะรีบูตเครื่อง ในที่สุดฉันก็พบข้อผิดพลาดในการปิดเครื่องที่ไม่สามารถอัปเดต hwclock ได้เพราะนาฬิกา hw มีวันที่ในอนาคต (ไม่รู้เลยว่าเกิดอะไรขึ้น) แต่การแก้ปัญหาคือแรงอัปเดต hwclock การบังคับให้อัปเดตเป็นนาฬิกาฮาร์ดแวร์ปลอมจากนั้นเมื่อบูตเวลาอย่างน้อยก็ใกล้เคียงกับปัจจุบันดังนั้น ntp จึงสามารถทำงานได้ตามปกติ
Piwaf

34

หลังจากค้นหารอบ ๆ วิธีการนี้ใช้ได้ผลสำหรับฉัน อย่างที่คุณทราบ Raspberry Pi 3 ได้ปิดใช้งาน NTP ตามค่าเริ่มต้น ดังนั้นเพียงแค่พิมพ์สิ่งนี้การสนับสนุน NTP จะถูกเปิดใช้งาน:

sudo timedatectl set-ntp True

ตรวจสอบผลลัพธ์ด้วย timedatectl status

ในกรณีที่มีการเตือนคุณอาจต้องวิ่งsudo timedatectl set-local-rtc trueด้วย


ขอบคุณในที่สุดสิ่งนี้ช่วยฉันออกมาและดูเหมือนจะเป็นวิธีที่เหมาะสมแม้จะมีคำตอบก่อนหน้านี้
CharlieS

1
นั่นคือคำตอบที่ดีที่สุดช่วยฉันได้มาก คุณสามารถใช้ 'sudo' เพื่อหลีกเลี่ยงการพิมพ์รหัสผ่านของคุณ (มีประโยชน์สำหรับสคริปต์ที่เรียกใช้) จุดประสงค์ของคำสั่ง seconds คืออะไร? set-local-rtc
Arad

12

หากคุณตั้งค่าโซนเวลาในraspi-configRaspberry Pi จะอัปเดตเวลาในการบูตโดยอัตโนมัติหากเชื่อมต่อกับอินเทอร์เน็ต

  1. sudo raspi-config
  2. เลือก Internationalisation Options
  3. เลือก I2 Change Timezone
  4. เลือกพื้นที่ทางภูมิศาสตร์ของคุณ
  5. เลือกเมืองที่ใกล้ที่สุด
  6. เลือก Finish
  7. เลือกที่Yesจะรีบูตทันที

สิ่งนี้ใช้ได้ดีสำหรับฉัน
AlexG

I2 Change Timezoneตัวเลือกไม่มีอยู่อีกต่อไป
mrded

12

ดูฟอรั่มโพสต์เวลาไม่ซิงค์บน Pi 3 และมีการดองเกิลอย่างเป็นทางการ

ntpdส่งเสียงแพ็กเก็ต IP / UDP ด้วยฟิลด์ ToS ที่ตั้งค่าเป็น 0xc0 ดังนั้นจึงค่อนข้างคล้ายกับปัญหาอื่น ๆ ที่ฉัน (และคนอื่น ๆ ) มีกับ Raspberry Pi3 เมื่อทำงานผ่านอินเตอร์เฟซภายใน Wi-Fi

เป็นวิธีแก้ปัญหาเพิ่มคำสั่ง

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

ไปที่ไฟล์

/etc/rc.local

ก่อนถึงทางออก 0 บรรทัด ถัดไปรีบูตและตรวจสอบ


1
ฉันมีปัญหาเดียวกับที่ฉันติดตั้ง RPi3 ที่ฉันได้รับสำหรับ XMas และคุณแก้ไขปัญหาของฉัน เยี่ยมมาก !!!
jfmessier

8

ควรอัปเดตเวลาอยู่แล้ว เซิร์ฟเวอร์ NTPD ควรเริ่มต้นหลังไฟล์ swap และก่อนหน้า SSHD

ตรวจสอบไฟล์ /etc/ntp.conf ของคุณเพื่อให้แน่ใจว่ามีการกำหนดค่า

ควรมีเซิร์ฟเวอร์อย่างน้อยหนึ่งรายการ ฉันใช้ time.nrc.ca สำหรับเซิร์ฟเวอร์ของฉัน

หน้าคู่มือสำหรับ ntp.conf อยู่ที่นี่: http://linux.die.net/man/5/ntp.conf


3

ลูกชายของฉัน Rasberry Pi จะไม่อัปเดตเวลานอกกรอบและหลังจากลองทำตามคำแนะนำทั้งหมดข้างต้นฉันสามารถนำไปอัปเดตด้วยตนเองได้ แต่ไม่ใช่โดยอัตโนมัติ ในที่สุดหลังจากดูที่อื่นเช่นกันโดยไม่ประสบความสำเร็จฉันพบว่าไฟล์ ntp.conf ที่มาพร้อมกับ Rasberry Pi มีบรรทัดต่อไปนี้แสดงความคิดเห็น:

#restrict 127.0.0.1
#restrict ::1

ฉันใช้

sudo nano /etc/ntp.conf

ในเทอร์มินัลเพื่อแก้ไขไฟล์ ntp conf เป็น:

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

นั่นแก้ไขปัญหาให้เราได้ มันอัปเดตกับทั้ง WiFi และสายเคเบิลอีเธอร์เน็ต ฉันไม่ทราบว่าจะอัปเดตด้วย WiFi หรือไม่หากเปลี่ยนเป็น rc.local ที่แนะนำข้างต้นตามเวลาที่ฉันพบวิธีแก้ไขปัญหาข้างต้นฉันได้ทำการเปลี่ยนแปลงแล้วและไม่ได้ยกเลิก


2

ฉันพบtimedatectlแอปพลิเคชันเพื่อช่วยฉันเมื่อฉันมีปัญหาที่คล้ายกัน มันถูกติดตั้งโดยค่าเริ่มต้นและ '--help' จะให้ภาพรวมที่ดีและเรียบง่ายเกี่ยวกับวิธีการใช้เครื่องมือ

หมายเหตุ: ตรวจสอบให้แน่ใจว่าเขตเวลาของคุณตั้งค่าไว้อย่างถูกต้องซึ่งเครื่องมือนี้สามารถทำได้เช่นกัน


1

นี่เป็นวิธีที่ฉันได้รับ หลายคำตอบเหล่านี้ดูเหมือนจะบ่งบอกถึงสิ่งที่ไม่ได้ตรวจสอบเมื่อฉันดูระบบ 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"

ฉันไม่มีอะไรที่ปรากฏในบันทึกที่ระบุว่าtimedatectlกำลังทำอะไรอยู่หรือntpกำลังทำการซิงค์กับสถานะของ NIC หรือ NTPD นั้นถูกติดตั้ง / กำหนดค่าด้วยซ้ำ

ในที่สุดฉันเพิ่งเพิ่มสิ่งนี้ไปยัง/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..."

และติดตั้งntp:

$ sudo apt-get install ntp

ซึ่งผลลัพธ์ในสิ่งนี้ใน/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 4.2.8p10@1.3728-o 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 4.2.8p10@1.3728-o 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...

ใช้งานได้กับ raspbian น้อยที่สุด: Failed to start ntp.service: Unit ntp.service not found.และ ntpd ก็ไม่มีอยู่เช่นกัน ในที่สุด Pi ก็ได้เวลา (ฉันกำลังมองหาสิ่งนี้เพราะ HTTPS ของฉันหยิกล้มเหลวโดยไม่ต้อง -k เมื่อทำงานก่อนหน้านั้น)
Steven Lu

@StevenLu - ฉันจะอัปเดต A'er เพื่อรวมการติดตั้ง ntp ด้วย
slm

@StevenLu -apt-get install ntp
slm

1

คุณไม่จำเป็นต้องใช้ ntp เพื่อแก้ไขปัญหา มีสคริปต์ที่อ่านวันที่จากเซิร์ฟเวอร์และคุณต้องกำหนดวันที่ให้เป็นผลลัพธ์ของสคริปต์นั้น (Raspberry Pi ของคุณต้องเชื่อมต่อกับอินเทอร์เน็ต) จากนั้นคุณต้องเรียกใช้คำสั่งนั้นเมื่อเริ่มต้น

ขั้นที่ 1:ดึงวันที่จากเซิร์ฟเวอร์

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

ขั้นที่ 2:เรียกใช้คำสั่งเมื่อเริ่มต้นด้วยการเพิ่มลงในไฟล์/etc/rc.local(ทำงานบน Ubuntu 16.04)

sudo gedit /etc/rc.local

เครดิต:

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

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


0

ฉันใช้สิ่งต่อไปนี้กับรูปภาพเริ่มต้นเพื่อซิงค์เวลาโดยไม่ต้องติดตั้งแพ็คเกจเพิ่มเติม

timedatectl set-local-rtc 0
timedatectl set-ntp 1
timedatectl status
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.