วิธีใช้คำสั่ง timedatectl บน Linux

เผยแพร่แล้ว: 2022-06-16
นาฬิกาแขวนหลายเรือนรวมตัวกัน ทุกเรือนแสดงเวลาต่างกัน
POR666/Shutterstock.com

คำสั่ง Linux timedatectl ให้คุณตั้งเวลา วันที่ และเขตเวลาสำหรับนาฬิการะบบและนาฬิกาแบบเรียลไทม์ของคุณ สละเวลาสักครู่ แล้วเราจะแสดงวิธีการทำงานทั้งหมดให้คุณดู

มันเป็นญาติกันทั้งหมด

การดูแลเวลาของคอมพิวเตอร์ของคุณเป็นหนึ่งในสิ่งที่คุณอาจคาดหวังได้ค่อนข้างตรงไปตรงมา อย่างน้อยก็จนกว่าคุณจะเริ่มมองเข้าไปข้างใน

Unix Epoch คืออะไรและ Unix Time ทำงานอย่างไร?
ที่เกี่ยวข้อง อะไรคือ Unix Epoch และ Unix Time ทำงานอย่างไร?

นาฬิการะบบ Linux นับจำนวนวินาทีนับตั้งแต่ยุค Unix นี่คือเวลา 00:00:00 น. วันที่ 1 ม.ค. 2513 UTC UTC ย่อมาจาก Universal Time Coordinated แต่มักเรียกว่าเวลาสากลเชิงพิกัดหรือเวลาสากล นี่คือมาตรฐานเวลาที่โลกใช้จัดการและควบคุมเวลา เขตเวลาต่างๆ จะใช้การชดเชย UTC เพื่อให้ได้เวลาท้องถิ่น เขตเวลาบางเขตอยู่ข้างหน้า UTC และบางเขตอยู่ข้างหลัง

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

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

โฆษณา

นาฬิกาของระบบอยู่ใน UTC เสมอ แอปพลิเคชันใด ๆ ที่จำเป็นต้องได้รับเวลาท้องถิ่นต้อง:

  • เข้าถึงนาฬิการะบบและรับ UTC
  • รู้ว่ามันอยู่ในเขตเวลาใดและใช้ออฟเซ็ตที่ถูกต้อง
  • พิจารณาว่าเวลาออมแสงมีผลหรือไม่

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

เหตุใด systemd ของ Linux จึงยังคงแตกแยกหลังจากหลายปีที่ผ่านมา
ที่เกี่ยวข้อง เหตุใด systemd ของ Linux จึงยังคงแตกแยกหลังจากหลายปีที่ผ่านมา

ในการแจกแจง Linux บน systemd เราใช้คำสั่ง timedatectl เพื่อดูหรือเปลี่ยนการตั้งค่าและค่าเหล่านั้น

เริ่มต้นใช้งาน timedatectl

หากต้องการดูข้อมูลปัจจุบันและเวลาและค่าอื่นๆ ให้ใช้คำสั่ง timedatectl พร้อมตัวดำเนินการ status

 สถานะ timedatectl 

ผลลัพธ์จากคำสั่ง timedatectl โดยใช้ตัวดำเนินการสถานะ

ที่จริงแล้ว คุณสามารถยกเลิกสถานะได้ และคุณยังได้ผลลัพธ์เหมือนเดิม

 timedatectl 

ผลลัพธ์จากคำสั่ง timedatectl ที่ไม่มีตัวดำเนินการ

แสดงเอาต์พุตทั้งสองชุด:

  • เวลาท้องถิ่น : เวลาที่คอมพิวเตอร์คิดตามเขตเวลา
  • เวลาสากล : เวลา UTC
  • RTC Time : เวลาที่นาฬิกาเรียลไทม์กำลังใช้อยู่ โดยปกตินี่คือ UTC
  • เขตเวลา : ข้อมูลเกี่ยวกับเขตเวลาที่กำหนด
  • System Clock Synchronized : นาฬิการะบบจะซิงโครไนซ์กับเซิร์ฟเวอร์ NTP หรือไม่
  • บริการ NTP : บริการ NTP ของคอมพิวเตอร์ทำงานอยู่หรือไม่
  • RTC ใน TZ ท้องถิ่น : ระบุว่านาฬิกาแบบเรียลไทม์ใช้เวลาท้องถิ่นแทน UTC หรือไม่

คุณสามารถดูจำนวนโซนเวลาที่คำสั่ง timedatectl รองรับโดยพิมพ์:

 timedatectl list-timezones | wc -l 

การนับโซนเวลา timedatectl

โฆษณา

นั่นเป็นวิธีที่มากกว่าเขตเวลาในโลก หากเราไพพ์เอาต์พุตใน grep และกรองรายการสำหรับ "อเมริกา" และไพพ์ที่ less เราสามารถเลื่อนดูรายการที่สามารถจัดการได้มากขึ้น

 timedatectl list-timezones | grep "อเมริกา/" | น้อย 

การกรองเขตเวลาของอเมริกาด้วย grep

ในขณะที่คุณตรวจสอบรายการนั้น คุณจะเห็นว่า “อเมริกา” มีความหมายที่กว้างที่สุดเท่าที่จะเป็นไปได้ สิ่งที่สองที่คุณจะสังเกตเห็นคือรายการส่วนใหญ่ไม่ใช่เขตเวลาจริง

รายการโซนเวลา "อเมริกัน" น้อยกว่า

การตั้งค่าเขตเวลา

หากคุณดูรายการโซนเวลาที่ไม่มีการกรองซึ่งรองรับโดย timedatectl คุณจะเห็นสถานที่และเขตเวลา ในการตั้งค่าเขตเวลา คุณสามารถระบุโดยใช้ชื่อเช่น EST หรือ GMT หรือคุณสามารถเลือกสถานที่ในเขตเวลาเดียวกับคุณ เช่น ลอนดอนหรือนิวยอร์ก

การรีเซ็ตเขตเวลาไม่ใช่สิ่งที่คุณจะทำบ่อย แต่บางทีคุณอาจย้ายบ้านหรือทำงานไปสักพักแล้วและต้องการปรับแล็ปท็อปของคุณให้เป็นภาษาท้องถิ่น หากคุณต้องการรีเซ็ตเขตเวลา ให้เลือกตำแหน่งในเขตเวลาที่คุณต้องการใช้

เราจะตั้งค่าคอมพิวเตอร์เครื่องนี้เป็นเวลาขึ้นเขา ซึ่งเป็นเขตเวลาเดียวกับเอดมันตัน จากนั้นเราจะดูว่าการตั้งค่ามีการเปลี่ยนแปลงอย่างไร

 timedatectl set-timezone "อเมริกา/เอดมันตัน"
 timedatectl 

การตั้งค่าโซนเวลาและเวลาใหม่

โซนเวลาของเรามีการเปลี่ยนแปลง เวลาท้องถิ่นของเราเปลี่ยนแปลง และออฟเซ็ตของเราจาก UTC เพิ่มขึ้น

ที่เกี่ยวข้อง: วิธีใช้ท่อบน Linux

ตั้งเวลาและวันที่ด้วยตนเอง

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

 timedatectl ตั้งเวลา 10:30:00 

ข้อความแสดงข้อผิดพลาดเนื่องจากการซิงโครไนซ์เวลามีผลบังคับ

โฆษณา

ใช้คำสั่งนี้เพื่อปิดบริการซิงโครไนซ์เวลา:

 sudo systemctl หยุด systemd-timesyncd.service

คุณสามารถตั้งเวลา วันที่ หรือทั้งสองอย่างได้โดยใช้ตัวดำเนินการตั้งเวลา timedatectl วันที่อยู่ในลำดับปี-เดือน-วัน YYY-MM-DD และเวลาเป็นชั่วโมง-นาที-วินาทีตามลำดับ HH:MM:SS เราจะตั้งเวลาและวันที่ด้วยคำสั่งนี้:

 timedatectl ตั้งเวลา "2022-01-30 10:30:00"

จากนั้นเราจะตรวจสอบว่าการเปลี่ยนแปลงเกิดขึ้นโดยใช้ timedatectl

 timedatectl 

ตั้งเวลาและวันที่ด้วยตนเอง

วันที่และเวลามีการเปลี่ยนแปลง นอกจากนี้ โปรดทราบว่าคอมพิวเตอร์ใช้เวลา UTC เท็จ เรายังได้รับแจ้งว่านาฬิกาของระบบไม่ได้ซิงโครไนซ์และบริการ NTP ไม่ทำงาน

หากคุณมีอินเทอร์เน็ต ทันทีที่คุณกู้คืนบริการซิงโครไนซ์เวลา ระบบจะดึงเวลาและรายละเอียดทั้งหมดจะถูกรีเซ็ตอย่างถูกต้อง

 sudo systemctl start systemd-timesyncd.service
 timedatectl 

เริ่มบริการ NTP ใหม่และกู้คืนค่าเวลาที่ถูกต้อง

RTC: UTC หรือ LTZ?

เป็นไปได้ที่จะตั้งค่านาฬิกาแบบเรียลไทม์เป็นเวลาในเขตเวลาท้องถิ่นของคุณแทนที่จะเป็น UTC ซึ่งเป็นไปได้ แต่ไม่แนะนำให้เลือก หากคุณทำการเปลี่ยนแปลง คุณจะเห็นคำเตือนเกี่ยวกับผลกระทบที่อาจเกิดกับระบบของคุณในอนาคต

โฆษณา

เหตุผลที่แสดงให้คุณเห็นวิธีนี้คือ คุณอาจพบเครื่องที่มีปัญหาแปลก ๆ เกี่ยวกับการตั้งเวลา นี่คือวิธีตั้งค่านาฬิกาตามเวลาจริงกลับเป็น UTC

อันดับแรก เราจะต้องตั้งค่าเป็นเขตเวลาท้องถิ่น

 timedatectl set-local-rtc 1

จากนั้นเราจะถาม timedatectl สำหรับสถานะของมัน

 timedatectl 

การตั้งค่านาฬิกาตามเวลาจริงเป็นโซนเวลาท้องถิ่นและคำเตือนที่มาพร้อมกับที่

ฉันคิดว่าพวกเขาได้แสดงความรู้สึกที่ชัดเจน

ในการกู้คืนนาฬิกาตามเวลาจริงเป็น UTC ให้ใช้คำสั่งนี้:

 timedatectl set-local-rtc 0

ตั้งแล้วลืมมันไป

ยกเว้นกรณีที่คุณทำผิดพลาดระหว่างการติดตั้งลีนุกซ์รุ่นแจกจ่าย หรือคุณย้ายที่ตั้ง โดยปกติแล้วจะไม่มีเหตุผลใดที่จะต้องแก้ไขการตั้งค่าของระบบและนาฬิกาแบบเรียลไทม์

โฆษณา

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

หากพร้อมแล้ว ระบบเวลาของคอมพิวเตอร์จะดูแลตนเอง

ที่เกี่ยวข้อง: วิธีซิงค์เวลาเซิร์ฟเวอร์ Linux ของคุณกับเซิร์ฟเวอร์เวลาเครือข่าย (NTP)