timedatectl: ตรวจสอบการซิงค์เวลาของเซิร์ฟเวอร์ Linux และตั้งค่าโซนเวลา
timedatectl เป็นคำสั่งของ systemd สำหรับดูและเปลี่ยนนาฬิการะบบ โซนเวลา และสถานะการซิงค์เวลาผ่าน NTP ของเซิร์ฟเวอร์ Linux เมื่อตรวจสอบสถานะการซิงค์บนเซิร์ฟเวอร์ AlmaLinux 9 ที่ใช้ chrony และเซิร์ฟเวอร์ Debian 12 ที่ใช้ ntpsec พบว่านาฬิกาของทั้งสองเครื่องตรงแล้ว แต่บรรทัด NTP service แสดงเป็น active ในเครื่องหนึ่งและ n/a ในอีกเครื่อง
ผลลัพธ์ด้านล่างได้จากการรันคำสั่งบนเซิร์ฟเวอร์ทั้งสองเครื่อง เปลี่ยนเป็นค่าตัวอย่างเฉพาะชื่อโฮสต์ ที่อยู่ IP และหมายเลขเวอร์ชันของแพ็กเกจ และไม่ได้รันคำสั่งที่เปลี่ยนเวลาหรือโซนเวลาบนเซิร์ฟเวอร์ที่ใช้งานจริง
1️⃣ วิธีใช้ timedatectl และการตรวจสอบเวลาของเซิร์ฟเวอร์ Linux
การรัน timedatectl โดยไม่ใส่ตัวเลือกให้ผลเหมือนกับการใส่ status เวลาของนาฬิการะบบและนาฬิกาฮาร์ดแวร์ (RTC) โซนเวลา และสถานะการซิงค์จะรวมอยู่ในหน้าจอเดียว ด้านล่างคือผลลัพธ์บนเซิร์ฟเวอร์ Debian 12
timedatectl Local time: Wed 2026-10-28 19:49:57 UTC
Universal time: Wed 2026-10-28 19:49:57 UTC
RTC time: Wed 2026-10-28 19:49:57
Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
NTP service: n/a
RTC in local TZ: noเซิร์ฟเวอร์ Debian 12 ใช้โซนเวลา Etc/UTC จึงแสดง Local time และ Universal time เป็นเวลาเดียวกัน ความหมายของแต่ละบรรทัดและผลลัพธ์ของเซิร์ฟเวอร์ทั้งสองเครื่องอยู่ในตารางด้านล่าง
| บรรทัดผลลัพธ์ | สิ่งที่ตรวจได้ | ผลลัพธ์ของเซิร์ฟเวอร์ทั้งสองเครื่องและสิ่งที่ต้องตรวจสอบ |
|---|---|---|
| Local time | เวลาปัจจุบันของนาฬิการะบบตามโซนเวลาที่ตั้งไว้ | เมื่อเปลี่ยนโซนเวลา จะมีเพียงบรรทัดนี้และผลลัพธ์ของ date ที่เปลี่ยนเป็นโซนใหม่ |
| Universal time | เวลาเดียวกันในรูปแบบ UTC | ไม่เปลี่ยนแม้เปลี่ยนโซนเวลา – บนเซิร์ฟเวอร์ Debian 12 (Etc/UTC) จะตรงกับ Local time |
| RTC time | เวลาของนาฬิกาฮาร์ดแวร์ (RTC) | แสดงโดยไม่มีโซนเวลา – ถ้า RTC in local TZ เป็น no จะเป็นเวลา UTC |
| Time zone | โซนเวลาที่ตั้งไว้ ตัวย่อ และส่วนต่างจาก UTC | เวลาเปลี่ยน ให้ใช้ชื่อที่อยู่ในรายการของ list-timezones |
| System clock synchronized | เคอร์เนลถือว่านาฬิกาซิงค์แล้วหรือไม่ | เป็น yes ทั้งสองเครื่อง – ถ้าเป็น no ให้ตรวจเซิร์ฟเวอร์อ้างอิงก่อนด้วย chronyc tracking หรือ ntpq -p |
| NTP service | บริการซิงค์ที่ timedatectl เปิดปิดได้กำลังทำงานอยู่หรือไม่ | AlmaLinux 9 (chrony) เป็น active ส่วน Debian 12 (ntpsec) เป็น n/a – n/a หมายถึงบริการที่ timedatectl ไม่รู้จัก จึงต้องตรวจด้วย systemctl |
| RTC in local TZ | นาฬิกาฮาร์ดแวร์ใช้เวลาท้องถิ่นหรือไม่ (no = UTC) | เป็น no ทั้งสองเครื่อง – คำสั่งเปลี่ยน yes เป็น UTC คือ set-local-rtc 0 |
Linux มีนาฬิกาสองตัว นาฬิการะบบคือนาฬิกาที่เคอร์เนลดูแลหลังบูตเครื่อง ส่วนนาฬิกาฮาร์ดแวร์คือนาฬิกาบนเมนบอร์ดที่ยังเดินต่อแม้เซิร์ฟเวอร์ปิดอยู่
อ่านนาฬิกาฮาร์ดแวร์ได้โดยตรงด้วย hwclock โดย hwclock จะแสดงเวลาที่แปลงเป็นโซนเวลาปัจจุบันแล้ว บนเซิร์ฟเวอร์ AlmaLinux เมื่ออ่านโดยใส่ TZ=UTC ไว้หน้าคำสั่ง ได้เวลา UTC ที่ลงท้ายด้วย +00:00
TZ=UTC hwclock --show2026-10-28 19:53:33.006788+00:00บนเซิร์ฟเวอร์ Debian 12 ที่เชื่อมต่อด้วยบัญชีผู้ใช้ทั่วไป คำสั่งเดียวกันจบลงโดยเข้าถึงนาฬิกาฮาร์ดแวร์ไม่ได้
/usr/sbin/hwclock --showhwclock: Cannot access the Hardware Clock via any known method.
hwclock: Use the --verbose option to see the details of our search for an access method.บรรทัด RTC in local TZ เป็นการตั้งค่าเดียวกับบรรทัดที่สามของไฟล์ /etc/adjtime บนเซิร์ฟเวอร์ AlmaLinux บรรทัดที่สามคือ UTC หมายความว่านาฬิกาฮาร์ดแวร์ใช้เวลา UTC
cat /etc/adjtime0.0 0 0.0
0
UTCเมื่อต้องอ่านค่าในสคริปต์ ให้ใช้ show แทน status บนเซิร์ฟเวอร์ Debian 12 ข้อมูลเดียวกันจะแสดงในรูปแบบ ชื่อ=ค่า บรรทัดละหนึ่งรายการ
timedatectl showTimezone=Etc/UTC
LocalRTC=no
CanNTP=no
NTP=no
NTPSynchronized=yes
TimeUSec=Wed 2026-10-28 19:49:57 UTC
RTCTimeUSec=Wed 2026-10-28 19:49:57 UTCเลือกรายการด้วย -p แล้วใส่ --value จะเหลือแต่ค่าโดยไม่มีชื่อ ใช้รูปแบบนี้เมื่อต้องการดึงเฉพาะชื่อโซนเวลา
timedatectl show -p Timezone --valueEtc/UTC🔲 ตัวจำลองคำสั่ง timedatectl
ในตัวจำลองด้านล่าง คุณพิมพ์คำสั่งดูเวลา ดูรายการโซนเวลา เปลี่ยนโซนเวลา และตรวจการซิงค์ด้วย chronyc ได้เอง
2️⃣ สถานะการซิงค์เวลาของเซิร์ฟเวอร์ Linux
บรรทัด System clock synchronized บอกว่าเคอร์เนลถือว่านาฬิกาซิงค์แล้วหรือไม่ ส่วนบรรทัด NTP service บอกว่าบริการซิงค์ที่ timedatectl เปิดปิดได้กำลังทำงานอยู่หรือไม่ เมื่อใช้ show ค่าเดียวกันจะแสดงเป็น NTPSynchronized และ NTP ส่วน CanNTP บอกว่ามีบริการซิงค์ที่เปิดปิดได้หรือไม่
บนเซิร์ฟเวอร์ AlmaLinux 9 ที่ใช้ chrony ค่าทั้งสามเป็น yes
timedatectl show -p CanNTP -p NTP -p NTPSynchronizedCanNTP=yes
NTP=yes
NTPSynchronized=yesบนเซิร์ฟเวอร์ Debian 12 ที่ตั้งเวลาด้วย ntpsec มีเพียง NTPSynchronized ที่เป็น yes ส่วน CanNTP และ NTP เป็น no ด้วยเหตุนี้หน้าจอ status ของเซิร์ฟเวอร์นี้จึงแสดงบรรทัด NTP service เป็น n/a
timedatectl show -p CanNTP -p NTP -p NTPSynchronizedCanNTP=no
NTP=no
NTPSynchronized=yesตัวบริการ ntpsec เองทำงานอยู่
systemctl is-active ntpsecactiveบริการซิงค์ที่ timedatectl รู้จักมีเพียงบริการที่เขียนไว้ในไฟล์รายการในโฟลเดอร์ ntp-units.d และแพ็กเกจของดิสโทรจะวางไฟล์นี้ไว้ที่ /usr/lib/systemd/ntp-units.d/ (ตามคู่มือทางการ) บนเซิร์ฟเวอร์ AlmaLinux 9 มีไฟล์รายการที่แพ็กเกจ chrony ติดตั้งไว้ ข้างในมีบรรทัดเดียวคือ chronyd.service
cat /usr/lib/systemd/ntp-units.d/50-chronyd.listchronyd.servicerpm -qf /usr/lib/systemd/ntp-units.d/50-chronyd.listchrony-4.8-10.el9.x86_64เซิร์ฟเวอร์ Debian 12 ไม่มีโฟลเดอร์นี้ เนื่องจาก ntpsec ไม่อยู่ในรายการ timedatectl จึงรู้ว่านาฬิกาซิงค์แล้ว แต่เปิดหรือปิดบริการนั้นไม่ได้
ls /usr/lib/systemd/ntp-units.d/ls: cannot access '/usr/lib/systemd/ntp-units.d/': No such file or directory3️⃣ ตรวจสอบการซิงค์เวลาด้วย chronyc
บนเซิร์ฟเวอร์ที่ใช้ chrony ให้ตรวจด้วย chronyc ว่านาฬิกากำลังตั้งตามเซิร์ฟเวอร์เวลาเครื่องไหน sources จะแสดงเซิร์ฟเวอร์เวลาที่ chronyd สอบถามอยู่และสถานะของแต่ละเครื่อง บรรทัดละหนึ่งเครื่อง
chronyc sourcesMS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^- 192.0.2.10 2 10 377 943 +272us[ +275us] +/- 55ms
^- ntp1.example.com 2 10 377 80 -28us[ -32us] +/- 3655us
^- 198.51.100.33 3 10 257 384 -151us[ -156us] +/- 97ms
^- 198.51.100.82 3 10 177 532 +157us[ +149us] +/- 45ms
^* 192.0.2.123 3 4 377 2 -21us[ -23us] +/- 312usเครื่องหมาย ^ ด้านหน้าคือเซิร์ฟเวอร์เวลา ตัวที่สอง * คือเซิร์ฟเวอร์อ้างอิงที่นาฬิกากำลังตั้งตามอยู่ และ - คือเซิร์ฟเวอร์ตัวเลือกที่ไม่ได้นำมาคำนวณ Poll 4 ของเซิร์ฟเวอร์อ้างอิงหมายถึงสอบถามทุก 16 วินาที (2 ยกกำลัง 4) และ Reach 377 หมายถึงได้รับคำตอบครบทั้ง 8 ครั้งล่าสุด
tracking แสดงว่านาฬิการะบบคลาดจากเวลาของเซิร์ฟเวอร์อ้างอิงมากน้อยเพียงใด
chronyc trackingReference ID : C000027B (192.0.2.123)
Stratum : 4
Ref time (UTC) : Wed Oct 28 19:50:21 2026
System time : 0.000002422 seconds slow of NTP time
Last offset : -0.000002098 seconds
RMS offset : 0.000000981 seconds
Frequency : 6.348 ppm slow
Residual freq : -0.001 ppm
Skew : 0.017 ppm
Root delay : 0.000300815 seconds
Root dispersion : 0.000150780 seconds
Update interval : 16.3 seconds
Leap status : Normalบรรทัด System time แสดงว่านาฬิการะบบช้ากว่าเวลา NTP อยู่ 0.000002422 วินาที และ Leap status เป็น Normal ค่า Update interval 16.3 วินาทีคือช่วงห่างระหว่างการปรับนาฬิกาสองครั้งล่าสุด
เซิร์ฟเวอร์ที่จะสอบถามกำหนดโดยบรรทัด pool และ server ใน /etc/chrony.conf เมื่อตัดคอมเมนต์และบรรทัดว่างออกให้เหลือแต่บรรทัดตั้งค่า จะได้ดังนี้
grep -v "^#" /etc/chrony.conf | grep -v "^$"pool 2.almalinux.pool.ntp.org iburst
sourcedir /run/chrony-dhcp
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
keyfile /etc/chrony.keys
ntsdumpdir /var/lib/chrony
leapsectz right/UTC
logdir /var/log/chrony
server 192.0.2.123 prefer iburst minpoll 4 maxpoll 4บรรทัด pool ใช้สอบถาม NTP pool ของ AlmaLinux ส่วน prefer ในบรรทัด server สุดท้ายเป็นตัวเลือกที่ให้ chronyd เลือกเซิร์ฟเวอร์นี้ก่อนเครื่องอื่น makestep 1.0 3 เป็นการตั้งค่าที่ใน 3 ครั้งแรกหลัง chronyd เริ่มทำงาน จะปรับนาฬิกาที่คลาดเกิน 1 วินาทีในครั้งเดียว หลังจากนั้นจะค่อย ๆ ปรับโดยให้นาฬิกาเดินเร็วขึ้นหรือช้าลงเล็กน้อย rtcsync ทำให้เคอร์เนลคัดลอกเวลาระบบไปยังนาฬิกาฮาร์ดแวร์ทุก 11 นาที (ตามเอกสารทางการ)
บนเซิร์ฟเวอร์ Debian 12 ที่ใช้ ntpsec ตรวจข้อมูลเดียวกันด้วย ntpq -p เครื่องหมาย * ด้านหน้าคือเซิร์ฟเวอร์อ้างอิง และทั้งสามเครื่องถูกสอบถามทุก 1024 วินาที
ntpq -p remote refid st t when poll reach delay offset jitter
===============================================================================
+203.0.113.43 198.51.100.28 2 u 835 1024 377 184.6893 -0.1018 1.4879
+203.0.113.44 198.51.100.27 2 u 547 1024 377 183.0827 -2.4227 4.0957
*ntp2.example.co 198.51.100.40 2 u 440 1024 377 177.4670 -0.5814 1.70704️⃣ เปลี่ยนโซนเวลาด้วย timedatectl
ดูชื่อโซนเวลาได้ด้วย list-timezones ชื่อส่วนใหญ่อยู่ในรูปแบบ ทวีป/เมือง บรรทัดละหนึ่งชื่อ และทั้งสองเครื่องมี 598 ชื่อเท่ากัน
timedatectl list-timezones | head -5Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmaratimedatectl list-timezones | wc -l598รายการยาว เวลาค้นหาชื่อจึงกรองด้วย grep
timedatectl list-timezones | grep -i new_yorkAmerica/New_Yorkเปลี่ยนโซนเวลาโดยใส่ชื่อจากรายการต่อท้าย set-timezone คำสั่งนี้จะเปลี่ยนลิงก์ /etc/localtime ไปยังไฟล์โซนเวลาใหม่ บัญชีผู้ใช้ทั่วไปจึงต้องรันโดยใส่ sudo
sudo timedatectl set-timezone America/New_Yorkตรวจด้วย ls -l ว่า /etc/localtime เป็นลิงก์ไปยังไฟล์โซนเวลาหรือไม่
ls -l /etc/localtimelrwxrwxrwx 1 root root 27 Sep 24 12:52 /etc/localtime -> /usr/share/zoneinfo/Etc/UTCชื่อที่ไม่อยู่ในรายการถูกปฏิเสธทันทีก่อนจะเปลี่ยนโซนเวลา
timedatectl set-timezone Mars/OlympusFailed to set time zone: Invalid or not installed time zone 'Mars/Olympus'การเปลี่ยนโซนเวลาไม่ได้เปลี่ยนเวลาของนาฬิการะบบ มีเพียง Local time และผลลัพธ์ของคำสั่ง date ที่แสดงตามโซนใหม่ ถ้าเซิร์ฟเวอร์ตั้งนาฬิกาฮาร์ดแวร์เป็น UTC นาฬิกาฮาร์ดแวร์ก็ไม่เปลี่ยนเช่นกัน (ตามคู่มือทางการ)
5️⃣ เปิด NTP และตั้งเวลาเองด้วย timedatectl
set-ntp true จะเริ่มบริการแรกในรายการบริการซิงค์และตั้งให้เริ่มตอนบูตด้วย ส่วน false จะหยุดบริการในรายการและตั้งไม่ให้เริ่มตอนบูต (ตามคู่มือทางการ)
sudo timedatectl set-ntp trueบนเซิร์ฟเวอร์ Debian 12 ที่ไม่มีไฟล์รายการ แม้ใส่ false ซึ่งเป็นค่าเดียวกับปัจจุบัน ก็จบลงด้วย NTP not supported บริการที่ไม่อยู่ในรายการอย่าง ntpsec ต้องเปิดปิดโดยตรงด้วย systemctl
timedatectl set-ntp falseFailed to set ntp: NTP not supportedเมื่อต้องการตั้งเวลาเอง ให้ใส่วันที่และเวลาต่อท้าย set-time คำสั่งนี้จะตั้งนาฬิกาฮาร์ดแวร์ไปพร้อมกับนาฬิการะบบ
sudo timedatectl set-time '2026-10-28 20:00:00'บนเซิร์ฟเวอร์ Debian 12 เมื่อใส่ค่าที่รูปแบบผิด คำสั่งจบลงด้วยข้อผิดพลาดโดยไม่เปลี่ยนเวลา
timedatectl set-time badFailed to parse time specification 'bad': Invalid argumentบนเซิร์ฟเวอร์ที่ใช้ chrony เมื่อต้องการปรับนาฬิกาที่คลาดไปมากในครั้งเดียว ให้ใช้ chronyc makestep
sudo chronyc makestepmakestep จะทิ้งส่วนต่างที่เหลือซึ่งกำลังค่อย ๆ ปรับอยู่ แล้วให้นาฬิการะบบกระโดดไปตามส่วนต่างนั้นทันที เอกสารทางการเตือนว่าเวลาที่เปลี่ยนกะทันหันอาจกระทบซอฟต์แวร์บางตัว จึงควรใช้เฉพาะเมื่อนาฬิกาคลาดมากจนค่อย ๆ ปรับได้ยาก
🔢 FAQ & เนื้อหาแนะนำ
การตั้งค่า · locale
[Linux] คำสั่ง localectl
คำสั่ง localectl สำหรับดูและเปลี่ยนภาษาของระบบ (locale) และรูปแบบแป้นพิมพ์
ข้อมูลระบบ
คำสั่ง uptime ของ Linux (ตรวจเวลาที่เซิร์ฟเวอร์ทำงาน&โหลดเฉลี่ย 1, 5, 15 นาที)
คำสั่ง uptime สำหรับดูว่าเซิร์ฟเวอร์เปิดมานานเท่าใดและโหลดเฉลี่ย 1, 5 และ 15 นาที
จัดการบริการ
เริ่ม หยุด และรีสตาร์ต Apache: คำสั่งและความต่างของ graceful
คำสั่งเริ่ม หยุด และรีสตาร์ต Apache รวมถึงตรวจสถานะบริการบนระบบตระกูล Red Hat และ Ubuntu
ℹ️ ประกาศเรื่องลิงก์แอฟฟิลิเอต
เนื้อหาของเว็บไซต์นี้มีลิงก์แอฟฟิลิเอต หากผู้เข้าชมซื้อสินค้าหรือบริการผ่านลิงก์เหล่านี้ เว็บไซต์นี้จะได้รับค่าคอมมิชชันจากผู้ขาย ในกระบวนการนี้ ราคาที่ผู้ซื้อจ่าย(ราคาจะลดลงเมื่อมีโปรโมชัน↓)จะไม่สูงขึ้นแต่อย่างใด ราคา ส่วนลด และข้อมูลสต็อกที่แสดงเป็นข้อมูล ณ เวลาที่เขียนและอาจต่างจากความเป็นจริง โปรดตรวจสอบกับผู้ขายอีกครั้งก่อนซื้อ การเลือกและการประเมินสินค้าเขียนตามเกณฑ์ของเราเอง และการได้รับค่าคอมมิชชันหรือไม่ไม่มีผลต่อลำดับการแนะนำหรือเนื้อหาการประเมิน