วิธีตั้งเวลา เขตเวลา และซิงค์นาฬิกาในลินุกซ์
ในบทความนี้ เรียนรู้วิธีการตั้งค่าเวลา เขตเวลา และซิงโครไนซ์นาฬิการะบบ Linux ของคุณกับ NTP โดยใช้ timedatectl, systemd-timesyncd และ chrony :
คำสั่ง ‘timedatectl‘ เป็นยูทิลิตี้สำหรับดิสโทรที่ใช้พื้นฐาน RHEL และ Debian และเป็นส่วนหนึ่งของระบบและตัวจัดการบริการ ‘systemd‘ ซึ่งทำหน้าที่แทนคำสั่ง date แบบเก่าที่ใช้ในดิสโทร Linux แบบ daemon-based ของ ‘sysvinit‘
คำสั่ง timedatectl ช่วยให้คุณสามารถตรวจสอบและเปลี่ยนแปลงการตั้งค่าของนาฬิการะบบและการตั้งค่าต่าง ๆ ได้ คุณสามารถใช้คำสั่งนี้เพื่อตั้งค่าหรือเปลี่ยนวันที่ เวลา และเขตเวลาปัจจุบัน หรือเปิดใช้งานการซิงโครไนซ์นาฬิการะบบอัตโนมัติกับเซิร์ฟเวอร์ NTP ระยะไกล
ในบทช่วยสอนนี้ ผมจะพาคุณไปเรียนรู้วิธีการจัดการเวลาบนระบบ Linux ของคุณโดยการตั้งค่า วันที่, เวลา, เขตเวลา และ การซิงโครไนซ์เวลาโดยใช้ NTP จากเทอร์มินัลโดยใช้ timedatectl, systemd-timesyncd และ chrony
การรักษาเวลาให้ถูกต้องบนเซิร์ฟเวอร์หรือระบบ Linux ของคุณถือเป็นการปฏิบัติที่ดีเสมอ และมันสามารถให้ประโยชน์ดังต่อไปนี้:
- รักษาการทำงานตามเวลาของงานระบบเนื่องจากงานส่วนใหญ่ใน Linux ถูกควบคุมโดยเวลา
- เวลาที่แม่นยำสำหรับการบันทึกเหตุการณ์และข้อมูลอื่นๆ บนระบบ
- การซิงโครไนซ์ที่เหมาะสมสำหรับระบบและแอปพลิเคชันแบบกระจาย
- จำเป็นสำหรับโปรโตคอลความปลอดภัย เช่น Kerberos และการตรวจสอบความถูกต้องของใบรับรอง SSL/TLS
วิธีค้นหาและตั้งค่าเขตเวลาท้องถิ่นในลินุกซ์
1. ในการแสดงเวลาปัจจุบันและวันที่บนระบบของคุณ ใช้คำสั่ง timedatectl จากบรรทัดคำสั่งดังนี้:
timedatectl status
ในผลลัพธ์ข้างต้น เวลา RTC คือเวลาของนาฬิกาฮาร์ดแวร์
2. เวลาของ ระบบ Linux ของคุณจะถูกจัดการเสมอผ่าน โซนเวลา ที่ตั้งค่าในระบบ หากต้องการดูโซนเวลาปัจจุบันของคุณ ให้ทำดังนี้:
timedatectl
OR
timedatectl | grep Time
3. ในการดูเขตเวลาที่มีทั้งหมด ให้รันคำสั่งด้านล่าง:
timedatectl list-timezones
4. เพื่อหานาฬิกาเวลาท้องถิ่นตามตำแหน่งของคุณ ให้รันคำสั่งต่อไปนี้
timedatectl list-timezones | egrep -o "Asia/B.*"
timedatectl list-timezones | egrep -o "Europe/L.*"
timedatectl list-timezones | egrep -o "America/N.*"
5. ในการตั้งค่าเขตเวลาท้องถิ่นของคุณใน Linux เราจะใช้สวิตช์ set-timezone ตามตัวอย่างด้านล่างนี้
sudo timedatectl set-timezone "Asia/Kolkata"
timedatectl status
แนะนำให้ใช้และตั้งเวลาเป็นเวลาโลกสากลที่ประสานกัน UTC เสมอ
sudo timedatectl set-timezone UTC
timedatectl status
คุณจำเป็นต้องพิมพ์ชื่อเขตเวลาให้ถูกต้อง มิฉะนั้นอาจเกิดข้อผิดพลาดเมื่อเปลี่ยนเขตเวลา ในตัวอย่างต่อไปนี้ เขตเวลา “Asia/Kolkata” ไม่ถูกต้องจึงทำให้เกิดข้อผิดพลาด
failed to set time zone: invalid timezone
วิธีตั้งเวลาและวันที่ในลินุกซ์
คุณสามารถตั้งวันและเวลาบนระบบของคุณโดยใช้คำสั่ง timedatectl ดังนี้:
ตั้งเวลาในลินุกซ์
6. ในการตั้งเวลาเพียงอย่างเดียว เราสามารถใช้สวิตช์ set-time พร้อมกับรูปแบบเวลาที่เป็น HH:MM:SS (ชั่วโมง นาที และวินาที)
sudo timedatectl set-time 12:25:30
timedatectl status
คุณอาจพบข้อผิดพลาดดังต่อไปนี้เมื่อกำหนดวันที่ตามที่แสดงด้านบน:
Failed to set time: Automatic time synchronization is enabled
ข้อผิดพลาดเกิดขึ้นเนื่องจากการซิงโครไนซ์เวลาฟ้าอัตโนมัติ (NTP) ถูกเปิดใช้งาน ซึ่งทำให้ไม่สามารถเปลี่ยนเวลาได้ด้วยตนเอง
ในการแก้ไข ให้ปิด NTP ก่อน แล้วจึงตั้งเวลา
sudo timedatectl set-ntp false
sudo timedatectl set-time 12:25:30
timedatectl status
7. ในการตั้งค่าวันที่และเวลา ให้ใช้สวิตช์ set-time พร้อมกับรูปแบบวันที่ใน YYYY-MM-DD (ปี, เดือน, วัน) และเวลาใน HH:MM:SS (ชั่วโมง, นาที, และ วินาที):
sudo timedatectl set-time '2026-01-23 12:25:30'
วิธีค้นหาและตั้งค่าเวลาฮาร์ดแวร์ในลินุกซ์
8. ในการตั้งนาฬิกาฮาร์ดแวร์ของคุณให้ตรงกับเวลาสากลประสาน UTC ใช้ตัวเลือก set-local-rtc boolean-value ดังนี้:
ก่อนอื่น ตรวจสอบว่าหัวนาฬิกาฮาร์ดแวร์ของคุณตั้งค่าเป็นโซนเวลาท้องถิ่นหรือไม่:
timedatectl | grep local
ตั้งนาฬิกาฮาร์ดแวร์ของคุณให้ตรงกับโซนเวลาท้องถิ่น:
sudo timedatectl set-local-rtc 1
ตั้งนาฬิกาฮาร์ดแวร์ของคุณเป็นเวลาสากลประสาน (UTC):
sudo timedatectl set-local-rtc 0
หมายเหตุ: การตั้งค่า RTC ให้เป็นเวลาท้องถิ่นไม่แนะนำและอาจทำให้เกิดปัญหาเกี่ยวกับการปรับเวลาในช่วงการเปลี่ยนเวลาออมแสง ดังนั้นจึงควรเก็บ RTC ไว้ใน UTC
การซิงโครไนซ์นาฬิการะบบลินุกซ์กับเซิร์ฟเวอร์ NTP ระยะไกล
NTP ย่อมาจาก Network Time Protocol เป็นโปรโตคอลอินเทอร์เน็ตที่ใช้ในการซิงโครไนซ์นาฬิกาของระบบระหว่างคอมพิวเตอร์
ยูทิลิตี้ timedatectl ช่วยให้คุณสามารถซิงโครไนซ์นาฬิกาของระบบ Linux ของคุณกับกลุ่มเซิร์ฟเวอร์ระยะไกลโดยอัตโนมัติผ่าน NTP.
การแจกจ่ายลินุกซ์สมัยใหม่ส่วนใหญ่ใช้การประยุกต์ใช้งานที่แตกต่างกันสำหรับการซิงโครไนซ์ NTP:
- systemd-timesyncd: ไคลเอนต์ SNTP (Simple NTP) ขนาดเบาที่ฝังมากับ systemd ซึ่งเหมาะสำหรับเดสก์ท็อปส่วนใหญ่และการตั้งค่าเซิร์ฟเวอร์เดี่ยว
- chrony: การใช้งาน NTP แบบเต็มรูปแบบที่สามารถทำหน้าที่เป็นทั้งไคลเอนต์และเซิร์ฟเวอร์ได้ มันจัดการกับการเชื่อมต่อเครือข่ายที่ขาดๆ หายๆ ได้ดีขึ้นและมีความแม่นยำสูงกว่า
การใช้ systemd-timesyncd
ในการเริ่มการซิงโครไนซ์เวลาตามอัตโนมัติกับเซิร์ฟเวอร์ NTP ระยะไกล ให้พิมพ์คำสั่งต่อไปนี้ที่เทอร์มินัล ซึ่งจะเปิดใช้งานและเริ่มบริการ systemd-timesyncd
sudo timedatectl set-ntp true
ในการปิดการซิงโครไนซ์เวลาของ NTP ให้พิมพ์คำสั่งต่อไปนี้ที่เทอร์มินัล
sudo timedatectl set-ntp false
เพื่อตรวจสอบสถานะการซิงโครไนซ์:
timedatectl status
คุณควรเห็น “นาฬิการะบบซิงโครไนซ์: ใช่” และ “บริการ NTP: กำลังทำงาน”
การใช้ chrony (แนะนำสำหรับเซิร์ฟเวอร์)
หากคุณกำลังใช้งานเซิร์ฟเวอร์หรือจำเป็นต้องมีการซิงโครไนซ์เวลาที่เชื่อถือได้มากขึ้น chrony เป็นตัวเลือกที่ดีกว่า และเหมาะอย่างยิ่งสำหรับ:
- ระบบที่ไม่ทำงานต่อเนื่อง (แล็ปท็อป, เดสก์ท็อป)
- เซิร์ฟเวอร์ต้องการความแม่นยำสูง
- ระบบที่มีการเชื่อมต่อเครือข่ายเป็นช่วง ๆ
- สภาพแวดล้อมแบบคลัสเตอร์ที่ความสอดคล้องของเวลามีความสำคัญ
ก่อนอื่น ติดตั้ง chrony (ถ้ายังไม่ได้ติดตั้ง):
sudo apt install chrony [On Debian-based systems]
sudo dnf install chrony [On RHEL-based systems]
หมายเหตุ: การติดตั้ง chrony จะทำให้ systemd-timesyncd ถูกปิดใช้งานโดยอัตโนมัติเพื่อป้องกันความขัดแย้ง
หลังการติดตั้ง ให้เปิดใช้งาน, เริ่มต้น และตรวจสอบสถานะการซิงโครไนซ์:
sudo systemctl enable --now chronyd
timedatectl status
หากต้องการใช้เซิร์ฟเวอร์ NTP ของคุณเองแทนเซิร์ฟเวอร์เริ่มต้น คุณจำเป็นต้องแก้ไขไฟล์การตั้งค่า Chrony
sudo nano /etc/chrony/chrony.conf
OR
sudo nano /etc/chrony/sources.d/custom.sources
เพิ่มเซิร์ฟเวอร์ NTP ที่คุณต้องการ (คุณสามารถดูรายชื่อเซิร์ฟเวอร์ NTP ได้จากโครงการ NTP Pool)
pool 0.pool.ntp.org iburst
pool 1.pool.ntp.org iburst
pool 2.pool.ntp.org iburst
รีสตาร์ท chrony หลังจากทำการเปลี่ยนแปลง:
sudo systemctl restart chronyd
หมายเหตุสำคัญเกี่ยวกับการซิงโครไนซ์ NTP
- คุณไม่สามารถใช้งาน NTP หลายตัวพร้อมกันได้ ดังนั้นจึงต้องเลือกใช้อย่างใดอย่างหนึ่งระหว่าง systemd-timesyncd หรือ chrony
- systemd-timesyncd เป็นเพียงการใช้งานด้านไคลเอนต์เท่านั้นและไม่สามารถให้บริการเวลากับระบบอื่นได้
- chrony สามารถทำหน้าที่ทั้งเป็นไคลเอนต์เวลาและเซิร์ฟเวอร์เวลาสำหรับเครือข่ายภายในของคุณได้
- สำหรับเซิร์ฟเวอร์ในการผลิตและโครงสร้างพื้นฐานที่สำคัญ โดยทั่วไปแนะนำให้ใช้ chrony แทน systemd-timesyncd
- NTP ต้องการให้พอร์ต UDP 123 เปิดสำหรับการเชื่อมต่อขาออก
สรุป
นี่คือตัวอย่างที่ง่ายมากซึ่งอธิบายในบทเรียนนี้ และฉันหวังว่าคุณจะพบว่ามีประโยชน์สำหรับการตั้งค่าชั่วโมงและเขตเวลาต่าง ๆ ของระบบลินุกซ์
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับเครื่องมือนี้ ให้ไปที่หน้าคู่มือ timedatectl
man timedatectl
ถ้าคุณมีอะไรอยากพูดเกี่ยวกับบทความนี้ สามารถฝากความคิดเห็นของคุณไว้ได้ หากต้องการเพิ่มข้อมูลเพิ่มเติมใด ๆ










