Computer >> คอมพิวเตอร์ >  >> ระบบ >> Linux

วิธีซิงค์เวลา Linux กับเซิร์ฟเวอร์ NTP

วิธีซิงค์เวลา Linux กับเซิร์ฟเวอร์ NTP

นาฬิกาคอมพิวเตอร์ไม่สมบูรณ์แบบ ให้เวลาสองสามวัน สัปดาห์หรือเดือน พวกเขาเลื่อนลอยและหยุดแสดงเวลาจริง พูดง่ายๆ ก็คือ หลังจากที่เลื่อนลอยแล้ว พวกเขาอาจแสดงว่า "10:30" แต่ในความเป็นจริงคือ "10:33" เป็นเรื่องปกติในคอมพิวเตอร์รุ่นเก่าที่จะปรับนาฬิกาคอมพิวเตอร์ด้วยตนเองเป็นระยะๆ แต่หลังจากที่การเชื่อมต่ออินเทอร์เน็ตแพร่หลาย ระบบปฏิบัติการสมัยใหม่ก็เริ่มปรับนาฬิกาโดยอัตโนมัติด้วยความช่วยเหลือจากเซิร์ฟเวอร์ NTP

NTP คืออะไร

NTP เป็นตัวย่อสำหรับ Network Time Protocol เป็นอัลกอริธึมที่ออกแบบมาเพื่อซิงโครไนซ์นาฬิกาคอมพิวเตอร์ผ่านการเชื่อมต่อเครือข่ายและทำให้นาฬิกามีความแม่นยำ

วิธีเปิดใช้งานการซิงโครไนซ์เวลาบน Linux

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

บน Linux OS ที่มี systemd

ลีนุกซ์ส่วนใหญ่ได้นำ systemd มาใช้ และมาพร้อมกับ “systemd-timesyncd” daemon นั่นหมายความว่าคุณมีไคลเอ็นต์ NTP ที่ติดตั้งไว้แล้วบน Ubuntu, Debian, Fedora, Arch Linux, openSUSE, Manjaro และอื่นๆ ใน distros เหล่านี้และอื่น ๆ ที่อิงตามเหล่านี้ (เช่น OS ระดับประถมศึกษา, Zorin OS) ให้เรียกใช้สิ่งนี้เพื่อตรวจสอบว่าเปิดใช้งานการซิงค์ NTP หรือไม่:

timedatectl

วิธีซิงค์เวลา Linux กับเซิร์ฟเวอร์ NTP

หากคุณเห็น Network time on: yes ในเอาต์พุต นาฬิกาคอมพิวเตอร์ของคุณจะถูกปรับโดยอัตโนมัติเป็นระยะผ่าน NTP บางครั้งคุณอาจสังเกตเห็นว่า NTP synchronized: no ซึ่งอาจหมายความว่านาฬิกาซิงค์ผ่านเครื่องมืออื่นนอกเหนือจาก "systemd-timesyncd" นอกจากนี้ยังอาจหมายความว่า systemd-timesyncd ยังไม่ได้ซิงค์ แต่จะซิงค์ในภายหลัง

หากคุณเห็น Network time on: no ให้เรียกใช้คำสั่งต่อไปนี้เพื่อเปิดใช้งานการซิงโครไนซ์เวลา NTP

sudo timedatectl set-ntp true

นั่นคือทั้งหมดที่คุณต้องทำกับการกระจายเหล่านี้

บน Linux OS ที่ไม่มี systemd

เมื่อ MX Linux ได้รับความนิยมอย่างมากเมื่อเร็ว ๆ นี้ ตัวอย่างเกี่ยวกับระบบปฏิบัติการนี้ดูเหมือนจะเหมาะสมที่จะเริ่มต้น เป็นกรณีพิเศษด้วย มัน "แบบ" มีระบบ แต่ "แบบ" ไม่มี timedatectl รายงานว่าเวลาของเครือข่าย "เปิดอยู่" แต่ไม่ได้ใช้ systemd-timesyncd

แล้วมันซิงค์ยังไง? คุณตรวจสอบได้ด้วยคำสั่งถัดไปซึ่งใช้กับระบบปฏิบัติการ Linux อื่นๆ ได้

sudo cat /var/log/syslog | grep ntp

บน MX Linux คุณจะได้ผลลัพธ์ที่คล้ายกับที่คุณเห็นในภาพต่อไปนี้

วิธีซิงค์เวลา Linux กับเซิร์ฟเวอร์ NTP

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

ซึ่งหมายความว่าเวลาไม่ได้ซิงค์ด้วยความแม่นยำสูงมาก (คิดว่าเป็นมิลลิวินาทีหรือไมโครวินาที) แต่แม่นยำเพียงพอสำหรับวัตถุประสงค์ส่วนใหญ่ โดยปกติจะแม่นยำ อย่างน้อยก็วินาที

ในระบบปฏิบัติการอื่น คุณอาจเห็น "ntpd" ซึ่งเป็น daemon ที่ทำงานอยู่เบื้องหลังและแม่นยำอย่างยิ่ง ยิ่งวิ่ง ยิ่งแม่นยำ

หากคุณต้องการติดตั้ง ntp . ด้วยเหตุผลบางประการ หรือ ntpdate บนระบบปฏิบัติการที่มี systemd ให้ปิดการใช้งานไคลเอ็นต์ ntp ของ systemd ก่อน

sudo timedatectl set-ntp false

แน่นอน คำสั่งข้างต้นไม่จำเป็นสำหรับ distros ที่ไม่ใช่ systemd

ติดตั้งไคลเอ็นต์ ntpdate

เหมาะสำหรับคอมพิวเตอร์ที่บ้าน แล็ปท็อป และอุปกรณ์อื่นๆ ที่ไม่ได้เชื่อมต่อกับอินเทอร์เน็ตตลอดเวลา

บน Debian, Ubuntu, Linux Mint, Zorin และ distros อื่น ๆ ตามสิ่งเหล่านี้ ให้เรียกใช้:

sudo apt install ntpdate

บน distros ที่ใช้เดเบียนทั้งหมดข้างต้น ได้รับการกำหนดค่าให้ทำงานหลังจากเห็นการเชื่อมต่อเครือข่ายใหม่ คุณบังคับให้ซิงค์เวลาตอนนี้ได้หากยกเลิกการเชื่อมต่อจากเครือข่ายแล้วเชื่อมต่อใหม่

บน Fedora ntpdate จะถูกเลิกใช้ ดังนั้นขอแนะนำให้คุณใช้ ntpd daemon แทน (ดูหัวข้อถัดไป) แนะนำให้ใช้เช่นเดียวกันสำหรับ distros อื่น ๆ ทั้งหมดด้วยเหตุผลสองประการ:

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

ในกรณีนี้ การติดตั้ง ntpd ตามคำแนะนำในหัวข้อถัดไปจะเหมาะสมกว่า

ติดตั้ง ntpd Daemon

บน Debian, Ubuntu, Zorin, Mint และ distros อื่น ๆ ที่ใช้ Debian หรือ Ubuntu ให้เรียกใช้:

sudo apt install ntp

distros เหล่านี้จะเริ่มต้น ntpd ทันที จากนั้นเปิดโดยอัตโนมัติทุกครั้งที่บู๊ต คุณไม่จำเป็นต้องดำเนินการใดๆ เพิ่มเติม

บน Fedora ให้ติดตั้งด้วย:

sudo dnf install ntp

บน CentOS ให้เรียกใช้:

sudo yum install ntp

สำหรับ Arch Linux ให้ใช้:

sudo pacman -S ntp

และใน openSUSE ให้ป้อน:

sudo zypper install ntp

หลังจากนั้น ให้เปิดใช้งานบริการเพื่อเปิดใช้งานเมื่อบู๊ตแล้วเริ่ม:

sudo systemctl enable ntpd
sudo systemctl start ntpd

ใน distros อื่นที่ทำงานโดยไม่มี systemd คุณอาจต้องเรียกใช้คำสั่งเหล่านี้แทน:

sudo update-rc.d ntpd enable
sudo service ntpd start

หรืออะไรก็ตามที่เทียบเท่ากับระบบปฏิบัติการของคุณ

หากคุณได้รับข้อผิดพลาดที่ไม่มี ntpd ให้แทนที่ “ntpd” ด้วย “ntp” ในคำสั่งด้านบน ชื่อการแจกแจงบางชื่อไฟล์บริการ ntpd daemon ต่างกัน

บทสรุป

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