This is G o o g l e's cache of http://www.debianclub.com/node/88 as retrieved on 11 Feb 2007 11:19:25 GMT.
G o o g l e's cache is the snapshot that we took of the page as we crawled the web.
The page may have changed since that time. Click here for the current page without highlighting.
This cached page may reference images which are no longer available. Click here for the cached text only.
To link to or bookmark this page, use the following url: http://www.google.com/search?hl=en&q=cache%3Ahttp%3A%2F%2Fwww.debianclub.com%2Fnode%2F88&btnG=Search


Google is neither affiliated with the authors of this page nor responsible for its content.

User login

Links

debianclub.com
debian.org
ubuntuclub.com
blognone.com

Syndicate

Syndicate content

NTPDate: เวลานั้นสำคัญไฉน ....

ที่ ตั้งหัวเรื่องอย่างนี้ก็เพราะสิ่งที่เรากำลังจะมาดูกันก็คือเรื่อง "เวลา" และเจ้าเวลานี่เองที่เป็นต้นเหตุของการเรียนรู้ในครั้งนี้ เรื่องก็มีอยู่ว่า หากเราใช้งานเครื่องคอมพิวเตอร์เราคนเดียว ไม่ต้องติดต่อกับใคร ไม่ต้องส่งข้อมูลให้ใคร เรื่องเวลาเราจะตั้งเป็นเท่าไรก็ได้ ช้าหรือเร็วก็แล้วแต่ชอบใจ แต่เมื่อใดก็ตามที่เราต้องส่งข้อมูลไปยังเครื่องอื่น ๆ และต้องมีการเปรียบเทียบกันว่าข้อมูลตัวไหนเป็นตัวใหม่หรือเก่าแล้วหละก็ ....เกิดปัญหาแล้วสิ.... เพราะการจะเปรียบเทียบกันต้องตั้งอยู่บนฐานเวลาที่ตรงกัน หากช้า หรือเร็วกว่ากัน ก็ส่งผลให้การเปรียบเทียบผิดพลาด

วิธีแก้ปัญหา ... ก็ตั้งเองให้มันตรงกันสิ นั่นมันก็ได้อยู่หรอก แต่มีวิธีที่ดีกว่านั้น เราคงเคยได้ยินเรื่องการตั้งเวลา โดยการรับค่าเวลาจากเซิร์ฟเวอร์เวลา (Time Server) ซึ่งเครื่องที่ขอเวลาจากเซิร์ฟเวอร์ ก็จะได้เวลาที่ตรงกันเอง โดยไม่ต้องออกแรงมากมาย งั้นก็เริ่มลงโปรแกรมเลยละกันครับ

# aptitude install ntpdate

ได้โปรแกรมมาแล้ว ก็เหลือแต่ต้องตั้งค่าต่าง ๆ ให้โปรแกรม แต่ว่าไปแล้วค่าที่ระบบตั้งมาให้ก็ใช้ได้แล้ว อาจจะไม่ต้องแก้อะไรเลย

ลองขอเวลาดู

# ntpdate-debian

31 Jan 00:24:55 ntpdate[10301]: adjust time server 216.162.200.152 offset -0.000195 sec

อาฮ่า.... ได้เวลามาแล้ว แต่ค่อนข้างช้าแฮะ ... ทำไหมเหรอครับ ก็เจ้าเซิร์ฟเวอร์เวลา ที่ตั้งค่ามากับแพ็คเกจ เขาไม่ได้ตั้งสำหรับเราคนไทยใช่ไหมครับ งั้นก็มาใช้ตัวที่อยู่ใกล้ ๆ หน่อยละกันจะได้เร็วหน่อย

# echo "server th.pool.ntp.org" > /etc/ntp.conf

คราวนี้ลองดูใหม่

# ntpdate-debian

31 Jan 00:29:51 ntpdate[10329]: adjust time server 61.19.242.42 offset 0.001380 sec

รอบนี้ได้มาเหมือนกัน เร็วกว่าด้วย

แต่ทว่า โดยพื้นฐานของระบบแล้ว จะเกิดการคลาดเคลื่อนของเวลาตลอดเวลาทีละเล็กทีละน้อย เนื่องจากพื้นฐานความแตกต่างทางด้านฮาร์ดแวร์ ซึ่งมีความแม่นยำต่างกัน ดังนั้นการขอเวลาจากเซิร์ฟเวอร์เวลาตามช่วงเวลาที่กำหนด อาจจะเป็น 1-2 ชั่วโมงต่อครั้ง จึงเป็นความคิดที่ดี

งั้นก็กำหนด
/etc/crond.hourly/updatetime

#!/bin/bash
/usr/sbin/ntpdate-debian > /dev/null
/sbin/hwclock --adjust   # ปรับค่าความแตกต่างเวลาระหว่าง System Time กับ Hardware Clock (RTC)
/sbin/hwclock --systohc # ตั้งค่าเวลา Hardware Clock ตาม System Time

# /etc/init.d/cron restart

ตอนนี้เครื่องของเราก็จะทำการขอเวลาทุก ๆ ชั่วโมงแล้ว

System Time คือเวลาที่ระบบใช้ในขณะที่ลินุกซ์ยังทำงาน โดยจะเป็นคนละส่วนกันกับ Hardware Clock (RTC - Real Time Clock) นั่นหมายความว่า ค่าเวลาที่อานได้จากคำสั่ง date จะมาจาก System Time ไม่ได้มาจาก Hardware Clock โดยหน้าที่ของ Hardware Clock ก็คือจะคอยให้เวลากับลินุกซ์ในขณะเริ่มทำงาน รวมไปถึงขณะที่ลินุกซ์ไม่ได้ทำงานด้วย(ปิดเครื่อง) ดังนั้น การตั้งเวลา Hardware Clock ตาม System Time จึงทำให้เรามั่นใจได้ว่า หากปิดเครื่องไปแล้ว เวลาที่เปิดเครื่องมาใหม่ เรายังมีเวลาของระบบที่ถูกต้องอยู่

มาถึงตอนนี้เราก็ได้เวลาที่ถูกต้องและค่อนข้างแม่นยำมาแล้ว ก็ทำอย่างเดียวกันกับเครื่องแม่ข่ายที่เราจะต้องส่งข้อมูลไปเก็บ และอาจจะต้องมีการเปรียบเทียบเรื่องเวลาของการใช้งาน แก้ไข ไฟล์ คราวนี้ก็ไม่มีปัญหาแล้ว :)

ข้อมูล: