จะตั้งค่า Ubuntu ให้ซิงก์นาฬิกาของฉันกับเซิร์ฟเวอร์เวลาได้อย่างไร


23

ฉันต้องการให้อูบุนตูซิงโครไนซ์นาฬิการะบบของฉันกับเซิร์ฟเวอร์เวลาโดยอัตโนมัติเมื่อเริ่มต้น

อย่างไรก็ตามพีซีของฉันไม่ได้เชื่อมต่อกับอินเทอร์เน็ตจนกระทั่งหลังจากฉันเข้าสู่ระบบ (บวก 5 - 10 วินาทีเพื่อการวัดที่ดี)

ฉันจะตั้งให้ทำเช่นนี้ได้อย่างไร


2
มีคำตอบที่ยอดเยี่ยมอยู่แล้วที่นี่ซึ่งอธิบายวิธีการติดตั้ง ntpd เพื่อให้คอมพิวเตอร์ของคุณเชื่อมต่อกับเซิร์ฟเวอร์เวลาอินเทอร์เน็ตอย่างต่อเนื่อง แต่ฉันต้องการเพิ่มว่าโดยค่าเริ่มต้น Ubuntu จะประสานเวลากับ ntp.ubuntu.com ทุกครั้งที่อินเทอร์เฟซเครือข่ายของคุณ "up" (เช่นเมื่อคุณเปิดคอมพิวเตอร์) สิ่งนี้ไม่ได้เกิดขึ้นในกรณีของคุณเนื่องจากวิธีที่คุณเชื่อมต่อกับอินเทอร์เน็ต แต่ผู้อ่านคนอื่นไม่ควรคิดว่า Ubuntu จะไม่ซิงค์เวลาโดยไม่ติดตั้ง ntpd

นี่คือสิ่งที่อธิบายวิธีการตั้งค่าเป็น time.nist.gov: askubuntu.com/questions/972799//
SDsolar

คำตอบ:


32

ทำได้ด้วย NTP ซึ่งมีคำแนะนำให้ใช้ โดยทั่วไปคุณจะต้องติดตั้ง NTP daemon ดูเหมือนจะมีตัวเลือกหลายตัวมี แต่ "มาตรฐาน" ntpหนึ่งในแพคเกจ ตามคำแนะนำที่หน้าเชื่อมโยง

sudo apt-get install ntp

จะได้รับการตั้งค่าทุกอย่างเพื่อซิงโครไนซ์กับเซิร์ฟเวอร์ NTP ของ Ubuntu

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


3
ฉันคิดว่าโดยทั่วไปแล้วเขาจะดีกว่าเพียงแค่มี ntpd ทำงานอยู่ตลอดเวลาและไม่สามารถเชื่อมต่อได้เมื่อเขาไม่ได้ออนไลน์นั่นคือไม่เป็นอันตราย ด้วยวิธีการดังกล่าววิธีการของฉันก็ควรใช้งานได้เช่นกัน)
mfisch

ฉันโอเคกับการทำงานอย่างต่อเนื่อง
นาธานออสมัน

1
จอร์จแค่ทำอย่างนั้น ฉันหวังว่าจะตอบคำถาม "ของจริง" ของคุณเนื่องจากสิ่งที่น่ารำคาญที่สุดในโลกคือการถามคำถามเช่นนี้และการตอบกลับทั้งหมดเป็น "ทำไมคุณถึงต้องการทำเช่นนั้น"
mfisch

สำหรับ Ubuntu 18.04 จะต้องใช้คำแนะนำในการติดตั้ง ntpd อีกต่อไป โดยค่าเริ่มต้น systemd-timesyncd.service จะประสานเวลา
ernstkl

9

หากคุณไปที่ "ระบบ -> การบริหาร -> เวลาและวันที่" คุณจะได้รับ GUI เพื่อตั้งวันที่ / เวลา

ตัวเลือกที่มีให้สำหรับการใช้เซิร์ฟเวอร์เวลา หากคุณตรวจสอบและไม่ได้ติดตั้ง NTP ระบบจะถามว่าคุณต้องการติดตั้งหรือไม่ เพียงคลิก "ใช่" และปล่อยให้มันทำงาน :)


ลืมสิ่งที่ "เริ่มต้น" NTP ทำงานเป็นประจำซึ่งหมายความว่าคุณควรซิงโครไนซ์เมื่อใดก็ตามที่คุณออนไลน์ ... แต่วิธีเดียวที่จะทำให้แน่ใจได้คือการใช้สคริปต์บางชนิดตามที่ mfisch ให้ไว้ ตอนนี้พูดตรงไปตรงมา: เมื่อซิงโครไนซ์แล้วมีโอกาสเล็กน้อยที่คอมพิวเตอร์ของคุณจะเลอะเทอะบนนาฬิกา ดังนั้นหากคุณใช้การซิงโครไนซ์เวลาเริ่มต้นและปล่อยให้มันทำงานเป็นแบ็คกราวน์คุณควรจะใช้เวลาส่วนใหญ่โดยไม่ต้องทำอะไรมาก
Little Jawa

ไม่ใช่ "เวลาและวันที่" หรือไม่
ดับเพลิง

@ Firefeather: มันอาจจะดี ฉันไม่มีอินเทอร์เฟซภาษาอังกฤษดังนั้นฉันบอกไม่ได้;)
Little Jawa

อ่าโง่ฉันลืมความเป็นสากล ระบบ en-us ของฉันระบุว่า "เวลาและวันที่"
ผจญเพลิง

6

คุณสามารถทำได้โดยใช้ที่และntpdate at อาจถูกติดตั้งไว้แล้ว แต่ntpdateอาจไม่ใช่ (apt-get install ntpdate)

ขั้นแรกสร้างสคริปต์ขนาดเล็กที่รัน ntpdate ให้เรียกมันว่า update_time.sh

#!/bin/bash
ntpdate pool.ntp.org

ในไฟล์. bash_login ของคุณ (ซึ่งคุณอาจต้องสร้าง) เพิ่มสิ่งนี้:

at -f ~/update_time.sh now + 1 minute

ควรทำสิ่งที่คุณต้องการ คุณสามารถเปลี่ยนการหน่วงเวลาที่ใช้เป็น 5 นาที 10 นาทีเป็นต้น

แก้ไข: ntpdateฉันเพิ่งรู้ว่าคุณจะต้องรากวิ่ง คุณจะต้องตั้งค่าบิต SUID บนสคริปต์ update_time.sh ที่ฉันพูดถึง คุณสามารถทำได้โดยการเรียกใช้จากคำสั่ง (จำเป็นต้องเรียกใช้เพียงครั้งเดียว):

sudo chmod 4711 update_time.sh
sudo chown root update_time.sh

1
iirc คุณไม่สามารถตั้งค่า suid บนสคริปต์. sh ได้
Broam

คุณสามารถทำ suid บน ntpdate โดยตรงได้หรือไม่? นั่นอาจจะทำให้สำเร็จในสิ่งเดียวกัน
mfisch

2
ทำไมต้องใช้at? และถ้าคุณจะทำงานโดยอัตโนมัติntpdateทำไมไม่เพียงติดตั้งntpบริการ
Reinier โพสต์

1
หมายเหตุ: ntpdate จะไม่ได้รับการติดตั้งตามค่าเริ่มต้นบน Ubuntu (16.04+) อีกต่อไปและเลิกใช้แล้วในเวลาต่อมาของ timedatectl timedatectl ควบคุมบริการ timesyncd ของ systemd ซึ่งถูกใช้โดยค่าเริ่มต้นสำหรับการซิงโครไนซ์เวลา
Corey Goldberg

0

ตั้งแต่ Ubuntu 16.04 timedatectl / timesyncd (ซึ่งเป็นส่วนหนึ่งของ systemd) แทนที่ ntpdate / ntp ส่วนใหญ่ ดูเวลาการประสานข้อมูล

คุณอาจต้องเปิดใช้งานการซิงโครไนซ์เวลาโดยใช้:

$ sudo timedatectl set-ntp on

หากคุณต้องการใช้ chrony:

  • หากคุณต้องการใช้การซิงค์แบบครั้งเดียว: $ chronyd -q

  • หากคุณต้องการการตรวจสอบครั้งเดียวโดยไม่ต้องตั้งค่าการใช้เวลา: $ chronyd -Q

  • สำหรับการซิงค์อย่างต่อเนื่องโซลูชันที่แนะนำคือ chrony:

chrony (ง)

NTP daemon chronyd คำนวณค่าดริฟท์และออฟเซ็ตของนาฬิการะบบของคุณและปรับอย่างต่อเนื่องดังนั้นจึงไม่มีการแก้ไขขนาดใหญ่ที่อาจนำไปสู่การบันทึกที่ไม่สอดคล้องกันเช่น ค่าใช้จ่ายนั้นใช้พลังงานในการประมวลผลและหน่วยความจำเพียงเล็กน้อย แต่สำหรับเซิร์ฟเวอร์ที่ทันสมัย การติดตั้ง

หากต้องการติดตั้ง chrony จากพรอมต์เทอร์มินัลให้ป้อน:

$ sudo apt install chrony

คุณอาจต้องเปิดใช้งาน

sudo timedatectl set-ntp on

ปรับปรุง:วิธีอื่นถ้าข้างต้นไม่ทำงานคือการตั้งค่างาน cron ให้ทำงาน$ chronyd -q

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