วิธีการเซ็ตอัพ Hardware Clock และ System Time บน Linux

โปรแกรมบน CentOS ที่ควรติดตั้งใช้งานร่วมกับ VoIP Server

วิธีการเซ็ตอัพ Hardware Clock และ System Time บน Linux

โพสต์โดย nuiz » 07 ก.ย. 2010 17:41

พอดีผมเพิ่งเซ็ต Time บนเครื่องเซอร์เวอร์เสร็จเมื่อกี้นี้ เลยเอาวิธีการต่างๆที่ผมได้ใช้ไปมาแชร์ให้ทราบกันครับ เพื่อต้องใช้สักวันหนึ่ง

จากบทความเรื่อง "การติดตั้ง NTP บน CentOS" เป็นการเซ็ตเวลา (Time) บน Linux โดยการดึงเวลามาจาก Time Server แต่บทความนี้ผมจะแนะนำวิธีการเซ็ต System Time โดยใช้คำสั่ง "date" และเซ็ต Hardware Clock โดยใช้คำสั่ง "hwclock"

ในเครื่องคอมพิวเตอร์ทุกเครื่องที่เราใช้งานกันอยู่ทุกวันนี้นะครับ ไม่ว่าจะเป็น Windows หรือว่า Linux หรือว่า Mac หรือว่า OS อะไรก็แล้วแต่ จะมีเวลา (Time) อยู่ด้วยกัน 2 ส่วน คือ "เวลาที่เก็บอยู่ในฮาร์ดแวร์เครื่อง" ซึ่งก็คือ BIOS นั่นเองครับ บางคนก็เรียกเวลานี้ว่า "Hardware clock" หรือ "BIOS clock" หรือ "CMOS clock" นะครับ และจะมีแบ็ตเตอรี่แบ็คอัพไว้อยู่ ถ้าแบ็ตไม่เสื่อมหล่ะก็เวลาที่เซ็ตไว้ก็จะไม่หายไปไหนครับ

เวลาอีกส่วนหนึ่งเป็นเวลาที่ระบบปฏิบัติการในเครื่องใช้ครับ เรียกว่า "System clock" โดยเมื่อเราบู๊ตเครื่อง เจ้า OS ก็จะไปเช็คเวลาจาก Hardward clock แล้วเอามาทำเป็น "System clock"

กรณีของระบบปฏิบัติการ Linux เราต้องเลือกว่าจะใช้ Hardward clock ในรูปแบบไหนระหว่าง "UTC/GMT time" หรือว่า "Local time" ผมแนะนำว่าควรเลือกเป็นแบบ "UTC/GMT time" ดีกว่านะครับ เพราะมันจะมีเรื่องของ DST (Daylight Saving Time) หรือการปรับเปลี่ยนเวลาเข้ามาเกี่ยวข้องด้วย เรื่องของเรื่องก็คือ ถ้าเราใช้แบบ UTC/GMT แล้วเซอร์เวอร์ของเราติดตั้งอยู่ในประเทศที่ต้องมีการปรับเวลาด้วย (DST) เช่นแถบประเทศสหรัฐอเมริกา ระบบก็จะปรับเวลาให้เองโดยอัตโนมัติ โดยเราไม่ต้องทำอะไร แต่ประเทศไทยไม่มี DST นะครับ ไม่ต้องมีการปรับเวลา

แต่การเซ็ต Hardward clock ให้เป็นแบบ UTC/GMT ก็มีข้อเสียอยู่เหมือนกันนะครับ แต่ว่าไม่น่าจะมีผลต่อเรา ข้อเสียที่ว่าก็คือ ถ้าเราติดตั้ง Linux ด้วย และ DOS ด้วยบนเครื่องเดียวกัน เวลาบน DOS จะไม่ตรงเพราะ DOS ต้องการ Hardward clock แบบ Local time นะครับ

การเซ็ต Timezone
เราเซ็ต Timezone บน Linux โดยการทำ Symbolic Link จาก /etc/localtime ไปยัง /usr/share/zoneinfo ซึ่งจะมีไดเร็คตอรีย่อยๆที่สอดคล้องกับ Timezone ที่เราอยู่ ยกตัวอย่างเช่น ผมอยู่ที่กรุงเทพ ประเทศไทย ผมต้องทำ Symbolic Link จาก /etc/localtime ไปยัง /usr/share/zoneinfo/Asia/Bangkok ด้วยคำสั่งนี้

โค้ด: เลือกทั้งหมด
rm -f /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Bangkok /etc/localtime


การเซ็ต Hardware clock ให้อยู่ในรูปแบบ UTC/GMT time หรือ Local time
ในขณะที่ Linux กำลังบู๊ตเครื่อง งานอย่างหนึ่งของมันก็คือรันสคริปต์ /sbin/hwclock เพื่อก๊อบปี้เวลาใน Hardware clock แล้วนำไปใช้เป็น System clock โดยโปรแกรมสคริปต์ hwclock จะสมมติเอาว่า Hardware clock เซ็ตเป็นรูปแบบ Local time เว้นแต่ว่าเรารัน /sbin/hwclock และมี --utc ต่อท้ายด้วย แบบนี้นะครับ "/sbin/hwclock --utc" แต่การจะไปแก้ไขสคริปต์ก็ใช่ที่ ถ้าเราใช้ Red Hat หรือว่า CentOS ให้แก้ไขไฟล์ /etc/sysconfig/clockแทน แก้ไขบรรทัด UTC ให้เป็น true
โค้ด: เลือกทั้งหมด
UTC=true

แล้วเซฟไฟล์

การเซ็ต System Clock
บน Linux ใช้คำสั่ง date เช่น ถ้าต้องการเซ็ตวันที่และเวลาปัจจุบันให้เป็น 7 กันยายน 2010 เวลา 15:55:25 ก็ใช้คำสั่งนี้
โค้ด: เลือกทั้งหมด
date -s "09/07/2010 15:55:25"

มีเครื่องหมาย "" ด้วยนะครับ

การเช็คเวลาเวลาปัจจุบันบน Linux
ใช้คำสั่ง date ไม่ต้องมีอะไรต่อท้าย
โค้ด: เลือกทั้งหมด
date


การเซ็ต Hardware clock
ปกติวิธีการที่ผมใช้คือเซ็ต System Clock ก่อน จากนั้นค่อยเซ็ต Hardware clock จาก System clock โดยการรันคำสั่ง
เซ็ตในรูปแบบ Local time
โค้ด: เลือกทั้งหมด
/sbin/hwclock --systohc

เซ็ตในรูปแบบ UTC/GMT time
โค้ด: เลือกทั้งหมด
/sbin/hwclock --systohc --utc


เช็ค Hardware clock
โค้ด: เลือกทั้งหมด
hwclock

ถ้าเป็นแบบ UTC/GMT แล้วต้องการดูเวลาที่เทียบเท่ากับ Local time
โค้ด: เลือกทั้งหมด
hwclock --utc


ถ้าเวลาในโปรแกรมไม่ตรง
ถ้าเราใช้คำสั่ง date พบว่าเวลาตรง แต่โปรแกรมอื่นแสดงเวลาไม่ตรง แก้ไขโดยการสร้าง Symbolic Link จาก /usr/lib/zoneinfo ไปยัง /usr/share/zoneinfo

โค้ด: เลือกทั้งหมด
ln -s /usr/share/zoneinfo /usr/lib/zoneinfo
** หากมีปัญหากับอุปกรณ์ที่ซื้อมาเองหรือบริการที่ทำขึ้นมาเอง ให้โพสต์ถามในเว็บบอร์ดนี้นะครับ **
** งานเร่งด่วนติดต่อว่าจ้างที่เบอร์ 08-5161-9439 อีเมล์ iamaladin@gmail.com ไลน์ NuizVoip ครับ **
nuiz
Diamond Member
 
โพสต์: 7069
ลงทะเบียนเมื่อ: 24 มี.ค. 2010 09:33

ย้อนกลับไปยัง CentOS - The Community Enterprise Operating System

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และ บุคคลทั่วไป 11 ท่าน