นาฬิกาคอมพิวเตอร์ไม่สมบูรณ์แบบ ให้เวลาผ่านไปหลายวัน สัปดาห์ หรือเดือน พวกมันลอยตัว (drift) และหยุดแสดงเวลาจริง อย่างง่าย หลังจากลอยตัว มันอาจแสดง "10:30" ตอนที่จริงๆ แล้วเป็น "10:33" การปรับนาฬิกาคอมพิวเตอร์ด้วยมือเป็นประเพณีบนคอมพิวเตอร์เก่า แต่หลังจากการเชื่อมต่ออินเทอร์เน็ตแพร่หลาย ระบบปฏิบัติการสมัยใหม่เริ่มปรับนาฬิกาอัตโนมัติด้วยความช่วยเหลือของ NTP Servers
NTP คืออะไร?
NTP ย่อมาจาก Network Time Protocol เป็นอัลกอริทึมที่ออกแบบมาเพื่อซิงโครไนซ์นาฬิกาคอมพิวเตอร์ผ่านการเชื่อมต่อเครือข่ายและรักษาความแม่นยำ
วิธีเปิดใช้งานการซิงค์เวลาใน Linux
โชคดีที่ระบบแจกจ่ายส่วนใหญ่ใช้งานรูปแบบหนึ่งของการซิงค์เวลา มาพร้อมกับระบบ (Out of the box) หากคุณไม่เคยสังเกตนาฬิกาคอมพิวเตอร์ลอยตัวจากนาฬิกาโทรศัพท์ คุณเกือบแน่นอนว่ามี NTP Client/Daemon ทำงานอยู่แล้ว
บน Linux OS ที่มี systemd
ระบบแจกจ่าย Linux ส่วนใหญ่ใช้ systemd และมาพร้อม Daemon systemd-timesyncd หมายความว่าคุณมี NTP Client ติดตั้งมากับระบบแล้วบน Ubuntu, Debian, Fedora, Arch Linux, openSUSE, Manjaro และอื่นๆ รวมถึงระบบที่พัฒนาจากพวกเขา (เช่น elementary OS, Zorin OS) รันคำสั่งนี้เพื่อตรวจสอบว่า NTP Sync เปิดอยู่หรือไม่:
timedatectl
หากเห็น Network time on: yes ในเอาต์พุท แสดงว่านาฬิกาคอมพิวเตอร์ถูกปรับอัตโนมัติเป็นระยะๆ ผ่าน NTP บางครั้งอาจเห็น NTP synchronized: no ซึ่งอาจหมายถึงนาฬิกาซิงค์ผ่านเครื่องมืออื่นนอกจาก "systemd-timesyncd" หรืออาจหมายถึง systemd-timesyncd ยังไม่ซิงค์แต่จะทำภายหลัง
หากเห็น Network time on: no ให้รันคำสั่งต่อไปนี้เพื่อเปิดใช้งาน NTP Time Synchronization:
sudo timedatectl set-ntp true
แค่นี้ก็พอสำหรับระบบแจกจ่ายเหล่านี้
บน Linux OS ที่ไม่มี systemd
ด้วยความนิยมของ MX Linux ล่าสุด ตัวอย่างเกี่ยวกับ OS นี้เหมาะสม 也是 特殊的กรณี มัน "ค่อนข้างมี" systemd แต่ "ค่อนข้างไม่มี" timedatectl รายงานว่า Network time "on" แต่ systemd-timesyncd ไม่ได้ใช้
มันซิงค์อย่างไร? ตรวจสอบด้วยคำสั่งถัดไป ซึ่งใช้ได้กับ Linux OS อื่นๆ ทุกตัว
sudo cat /var/log/syslog | grep ntp
บน MX Linux จะได้ผลลัพธ์คล้ายรูปถัดไป
จากข้อความ Log ที่กรองแล้ว คุณเห็นว่า Client "ntpdate" รันครั้งเดียว นี่เป็น Client ยอดนิยม ติดตั้งมากับระบบแจกจ่าย Linux หลายตัว มันเบาและ Query NTP Servers แบบ sporadic (ไม่สม่ำเสมอ) มันไม่รันในพื้นหลัง ถูก Trigger โดยสคริปต์ ซิงค์ แล้วออกไป
หมายความว่าเวลาไม่ได้ซิงค์ด้วยความแม่นยำสูงสุด (มิลลิวินาทีหรือไมโครวินาที) แต่แม่นยำพอสำหรับวัตถุประสงค์ส่วนใหญ่ ปกติแม่นยำถึงวินาที
บน OS อื่น คุณอาจเห็น "ntpd" ซึ่งเป็น Daemon รันในพื้นหลังตลอดเวลา และแม่นยำมาก ยิ่งรันนาน ยิ่งแม่นยำ
หากด้วยเหตุผลใดคุณต้องการติดตั้ง ntp หรือ ntpdate บน OS ที่มี systemd ให้ปิด NTP Client ของ systemd ก่อน
sudo timedatectl set-ntp false
คำสั่งข้างต้นไม่จำเป็นบนระบบแจกจ่ายที่ไม่มี systemd
ติดตั้ง NTPdate Client
เหมาะสำหรับคอมพิวเตอร์บ้าน, ลัปท็อป และอุปกรณ์อื่นๆ ที่ไม่ได้เชื่อมต่ออินเทอร์เน็ตตลอดเวลา
บน Debian, Ubuntu, Linux Mint, Zorin และระบบแจกจ่ายที่พัฒนาจากเหล่านี้ รัน:
sudo apt install ntpdate
บนระบบแจกจ่าย Debian-based ทั้งหมด มันถูกตั้งค่ามาแล้วให้รันหลังเห็นการเชื่อมต่อเครือข่ายใหม่ คุณบังคับซิงค์เวลาตอนนี้ได้โดยตัดการเชื่อมต่อเครือข่ายและเชื่อมต่อใหม่
บน Fedora ntpdate จะถูก Deprecated แนะนำให้ใช้ ntpd Daemon แทน (ดูส่วนถัดไป) เหมือนกันสำหรับระบบแจกจ่ายอื่นๆ ทั้งสองเหตุผล:
- บางครั้งไม่รวม ntpdate ในแพ็กเกจแยก แต่รวมกับ ntpd จากส่วนถัดไป
- ไม่ทำให้ ntpdate รันอัตโนมัติทุกครั้งที่เครือข่ายเชื่อมต่อ คุณต้องใส่ ntpdate เองในสคริปต์ที่รันอัตโนมัติหลังเครือข่ายเชื่อมต่อ
ในกรณีนี้ ติดตั้ง ntpd ตามส่วนถัดไปสมเหตุสมผลกว่า
ติดตั้ง NTPD Daemon
บน Debian, Ubuntu, Zorin, Mint และระบบแจกจ่ายที่พัฒนาจาก Debian หรือ Ubuntu รัน:
sudo apt install ntp
ระบบเหล่านี้จะเริ่ม ntpd ทันที และเปิดใช้งานอัตโนมัติทุกครั้งที่บูท ไม่ต้องทำอะไรเพิ่ม
บน Fedora ติดตั้งด้วย:
sudo dnf install ntp
บน CentOS รัน:
sudo yum install ntp
สำหรับ Arch Linux ใช้:
sudo pacman -S ntp
และบน openSUSE ใส่:
sudo zypper install ntp
หลังจากนั้น เปิดใช้งาน Service ให้รันตอนบูท และเริ่มมัน:
sudo systemctl enable ntpd sudo systemctl start ntpd
บนระบบแจกจ่ายอื่นที่รันไม่มี systemd คุณอาจต้องรันคำสั่งเหล่านี้แทน:
sudo update-rc.d ntpd enable sudo service ntpd start
หรือคำสั่งเทียบเท่าสำหรับ OS ของคุณ
หากได้ข้อผิดพลาดว่า ntpd ไม่มีอยู่ ให้แทนที่ "ntpd" ด้วย "ntp" ในคำสั่งข้างต้น บางระบบแจกจ่ายตั้งชื่อไฟล์ Service ของ Daemon ntpd ต่างกัน
สรุป
เรื่องนี้พบได้น้อยที่คุณต้องทำตามขั้นตอนเหล่านี้บน Linux OS ที่มี GUI อย่างน้อย การซิงค์เวลาควรถูกตั้งค่าให้คุณแล้ว แตขั้นตอนเหล่านี้ช่วย Debug ปัญหาบางครั้ง Control Panel หลาย Desktop Environment ให้เปิด/ปิดการซิงค์เวลา ในพื้นหลังพวกมันใช้คำสั่งคล้ายกันตั้งค่าให้คุณ คุณทำเองได้เมื่อเครื่องมือ GUI ล้มเหลว