สำหรับบทความนี้จะมาแนะนำวิธีการตั้งค่า Time Zone ของระบบปฏิบัติการ Linux โดยจะมีวิธีการทำ 2 วิธีง่ายๆ ดังนี้ครับ
- แก้ไขไฟล์ /etc/localtime
- แก้ไขไฟล์ /etc/timezone
มาเริ่มกันเลย…
1. แก้ไข TimeZone โดยใช้ไฟล์ /ect/localtime
สำหรับในตัวอย่างนี้ สมมติ TimeZone ปัจจุบันของคุณคือ UTC ที่แสดงตามตัวอย่างด้านล่าง และคุณต้องการเปลี่ยนไปเป็น Asia/Bangkok (+07:00)
# date
Tue Oct 1 11:30:12 UTC 2019
ซึ่งบาง Linux distributions เช่น Red Hat, CentOS หรือFedora (macOS ก็ได้) จะควบคุมเกี่ยวกับ TimeZone โดยไฟล์ /ect/localtime
ลบไฟล์ localtime ซึ่งอยู่ภายใต้โฟลเดอร์ /etc
# cd /etc
# rm localtime
จากนั้นสามารถแสดง TimeZone ต่างๆ โดยจะอยู่ภายใต้ /usr/share/zoneinfo/Asia
# ls /usr/share/zoneinfo/Asia/
Aden Chongqing Jerusalem Novokuznetsk Tashkent
Almaty Chungking Kabul Novosibirsk Tbilisi
Amman Colombo Kamchatka Omsk Tehran
Anadyr Dacca Karachi Oral Tel_Aviv
Aqtau Damascus Kashgar Phnom_Penh Thimbu
Aqtobe Dhaka Kathmandu Pontianak Thimphu
Ashgabat Dili Katmandu Pyongyang Tokyo
Ashkhabad Dubai Khandyga Qatar Tomsk
Atyrau Dushanbe Kolkata Qostanay Ujung_Pandang
Baghdad Famagusta Krasnoyarsk Qyzylorda Ulaanbaatar
Bahrain Gaza Kuala_Lumpur Rangoon Ulan_Bator
Baku Harbin Kuching Riyadh Urumqi
Bangkok Hebron Kuwait Saigon Ust-Nera
Barnaul Ho_Chi_Minh Macao Sakhalin Vientiane
Beirut Hong_Kong Macau Samarkand Vladivostok
Bishkek Hovd Magadan Seoul Yakutsk
Brunei Irkutsk Makassar Shanghai Yangon
Calcutta Istanbul Manila Singapore Yekaterinburg
Chita Jakarta Muscat Srednekolymsk Yerevan
Choibalsan Jayapura Nicosia Taipei
หมายเหตุ สำหรับ TimeZone ของประเทศอื่นๆ สามารถดูได้จากโฟลเดอร์ /usr/share/zoneinfo
ขั้นตอนต่อมาให้ทำการ Link ไฟล์ Bangkok ที่อยู่ภายใต้โฟลเดอร์ Asia (path: /usr/share/zoneinfo/Asia) ไปยังไฟล์ /etc/localtime ด้วยคำสั่งนี้
# ln -s /usr/share/zoneinfo/Asia/Bangkok /etc/localtime
ซึ่งตอนนี้ TimeZone ในระบบปฏิบัติการ Linux ของคุณเปลี่ยนเป็น Asia/Bangkok เป็นที่เรียบร้อยแล้ว สามารถเช็คได้ด้วยพิมพ์คำสั่ง date
# date
Tue Oct 1 18:55:41 +07 2019
2. แก้ไข TimeZone โดยใช้ไฟล์ /ect/timezone
สำหรับบาง Linux distributions เช่น Ubuntu, knoppix หรือ LinuxMint จะควบคุมเกี่ยวกับ TimeZone โดยไฟล์ /ect/timezone
ในตัวอย่างนี้ สมมติว่า TimeZone ปัจจุบันของคุณคือ US Eastern time (New York) ตามที่แสดงตัวอย่างด้านล่าง
# cat /etc/timezone
America/New_York
วิธีการเปลี่ยนให้เป็น Asia/Bangkok (+07:00) สามารถทำได้โดยการแก้ไขไฟล์ /etc/timezone ตามตัวอย่างด้านล่าง
# vim /etc/timezone
Asia/Bangkok
และยังสามารถเปลี่ยนด้วยวิธีการ set ค่า TimeZone ด้วยตัวแปร TZ ผ่าน Command line ได้ด้วย ตามคำสั่งด้านล่าง
# export TZ=Asia/Bangkok
จากนั้นลองเช็คโดยการพิมพ์คำสั่ง date
# date
Tue Oct 1 19:15:12 +07 2019
เป็นอันเสร็จพิธีครับ :) สำหรับการเปลี่ยน TimeZone ในระบบปฏิบัติการ Linux ไม่ยากเลยใช่ไหมครับ โดยสามารถนำวิธีการข้างต้นไปใช้กับ Linux distributions ที่คุณใช้อยู่ได้เลย
ก่อนจากกันวันนี้ ขอแถมวิธีการตั้งค่า TimeZone ใน Dockerfile สำหรับใช้งานกับ Docker Container
- Dockerfile ที่ใช้ Linux distributions เช่น Red Hat, CentOS, Fedora เพิ่มคำสั่งดังนี้
FROM <image># SET Timezone (Asia/Bangkok GTM+07:00)
RUN ln -sf /usr/share/zoneinfo/Asia/Bangkok /etc/localtime.
.
.
- Dockerfile ที่ใช้ Linux distributions เช่น Debian, Ubuntu หรือ LinuxMint เพิ่มคำสั่งดังนี้
FROM <image># SET Timezone (Asia/Bangkok GTM+07:00)
ENV TZ=Asia/Bangkok
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone.
.
.
Reference:
(ข้อมูลอาจมีข้อผิดพลาด ถ้าจะเอาบทความนี้ไปอ้างอิงที่อื่นให้ตรวจสอบให้ดีก่อนนะครับ ขอบคุณครับ)
สำหรับวันนี้ ต้องขอลาไปก่อน สวัสดีครับ NottDev :)