timedatectl: ตรวจสอบการซิงค์เวลาของเซิร์ฟเวอร์ Linux และตั้งค่าโซนเวลา

สภาพแวดล้อมทดสอบตระกูล RHELAlmaLinux 9.8systemd 252 · chrony 4.8บัญชี rootDebian 12 บัญชีผู้ใช้ทั่วไปตรวจสอบเมื่อ 2026-10-29

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 --show
2026-10-28 19:53:33.006788+00:00

บนเซิร์ฟเวอร์ Debian 12 ที่เชื่อมต่อด้วยบัญชีผู้ใช้ทั่วไป คำสั่งเดียวกันจบลงโดยเข้าถึงนาฬิกาฮาร์ดแวร์ไม่ได้

/usr/sbin/hwclock --show
hwclock: 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/adjtime
0.0 0 0.0
0
UTC

เมื่อต้องอ่านค่าในสคริปต์ ให้ใช้ show แทน status บนเซิร์ฟเวอร์ Debian 12 ข้อมูลเดียวกันจะแสดงในรูปแบบ ชื่อ=ค่า บรรทัดละหนึ่งรายการ

timedatectl show
Timezone=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 --value
Etc/UTC

🔲 ตัวจำลองคำสั่ง timedatectl

ในตัวจำลองด้านล่าง คุณพิมพ์คำสั่งดูเวลา ดูรายการโซนเวลา เปลี่ยนโซนเวลา และตรวจการซิงค์ด้วย chronyc ได้เอง

ตัวจำลองคำสั่ง timedatectlsystemd 252 · chrony 4.8
[root@server work]#
ทำงานในเบราว์เซอร์เท่านั้น โซนเวลาที่เปลี่ยนจะกลับไปเป็นค่าเริ่มต้น (Etc/UTC) เมื่อรีเฟรช และกด ↑↓ เพื่อเรียกคำสั่งก่อนหน้า

2️⃣ สถานะการซิงค์เวลาของเซิร์ฟเวอร์ Linux

บรรทัด System clock synchronized บอกว่าเคอร์เนลถือว่านาฬิกาซิงค์แล้วหรือไม่ ส่วนบรรทัด NTP service บอกว่าบริการซิงค์ที่ timedatectl เปิดปิดได้กำลังทำงานอยู่หรือไม่ เมื่อใช้ show ค่าเดียวกันจะแสดงเป็น NTPSynchronized และ NTP ส่วน CanNTP บอกว่ามีบริการซิงค์ที่เปิดปิดได้หรือไม่

บนเซิร์ฟเวอร์ AlmaLinux 9 ที่ใช้ chrony ค่าทั้งสามเป็น yes

timedatectl show -p CanNTP -p NTP -p NTPSynchronized
CanNTP=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 NTPSynchronized
CanNTP=no
NTP=no
NTPSynchronized=yes

ตัวบริการ ntpsec เองทำงานอยู่

systemctl is-active ntpsec
active

บริการซิงค์ที่ timedatectl รู้จักมีเพียงบริการที่เขียนไว้ในไฟล์รายการในโฟลเดอร์ ntp-units.d และแพ็กเกจของดิสโทรจะวางไฟล์นี้ไว้ที่ /usr/lib/systemd/ntp-units.d/ (ตามคู่มือทางการ) บนเซิร์ฟเวอร์ AlmaLinux 9 มีไฟล์รายการที่แพ็กเกจ chrony ติดตั้งไว้ ข้างในมีบรรทัดเดียวคือ chronyd.service

cat /usr/lib/systemd/ntp-units.d/50-chronyd.list
chronyd.service
rpm -qf /usr/lib/systemd/ntp-units.d/50-chronyd.list
chrony-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 directory
🖥️ timedatectlstatus, show, set-ntp
ntp-units.d/*.listรายการบริการซิงค์ที่ timedatectl เปิดปิดได้
chronyd.serviceอยู่ในรายการ → NTP service: active
ntpsec.serviceไม่อยู่ในรายการ → NTP service: n/a

3️⃣ ตรวจสอบการซิงค์เวลาด้วย chronyc

บนเซิร์ฟเวอร์ที่ใช้ chrony ให้ตรวจด้วย chronyc ว่านาฬิกากำลังตั้งตามเซิร์ฟเวอร์เวลาเครื่องไหน sources จะแสดงเซิร์ฟเวอร์เวลาที่ chronyd สอบถามอยู่และสถานะของแต่ละเครื่อง บรรทัดละหนึ่งเครื่อง

chronyc sources
MS 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 tracking
Reference 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.7070

4️⃣ เปลี่ยนโซนเวลาด้วย timedatectl

ดูชื่อโซนเวลาได้ด้วย list-timezones ชื่อส่วนใหญ่อยู่ในรูปแบบ ทวีป/เมือง บรรทัดละหนึ่งชื่อ และทั้งสองเครื่องมี 598 ชื่อเท่ากัน

timedatectl list-timezones | head -5
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
timedatectl list-timezones | wc -l
598

รายการยาว เวลาค้นหาชื่อจึงกรองด้วย grep

timedatectl list-timezones | grep -i new_york
America/New_York

เปลี่ยนโซนเวลาโดยใส่ชื่อจากรายการต่อท้าย set-timezone คำสั่งนี้จะเปลี่ยนลิงก์ /etc/localtime ไปยังไฟล์โซนเวลาใหม่ บัญชีผู้ใช้ทั่วไปจึงต้องรันโดยใส่ sudo

sudo timedatectl set-timezone America/New_York

ตรวจด้วย ls -l ว่า /etc/localtime เป็นลิงก์ไปยังไฟล์โซนเวลาหรือไม่

ls -l /etc/localtime
lrwxrwxrwx 1 root root 27 Sep 24 12:52 /etc/localtime -> /usr/share/zoneinfo/Etc/UTC

ชื่อที่ไม่อยู่ในรายการถูกปฏิเสธทันทีก่อนจะเปลี่ยนโซนเวลา

timedatectl set-timezone Mars/Olympus
Failed 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 false
Failed to set ntp: NTP not supported

เมื่อต้องการตั้งเวลาเอง ให้ใส่วันที่และเวลาต่อท้าย set-time คำสั่งนี้จะตั้งนาฬิกาฮาร์ดแวร์ไปพร้อมกับนาฬิการะบบ

sudo timedatectl set-time '2026-10-28 20:00:00'

บนเซิร์ฟเวอร์ Debian 12 เมื่อใส่ค่าที่รูปแบบผิด คำสั่งจบลงด้วยข้อผิดพลาดโดยไม่เปลี่ยนเวลา

timedatectl set-time bad
Failed to parse time specification 'bad': Invalid argument

บนเซิร์ฟเวอร์ที่ใช้ chrony เมื่อต้องการปรับนาฬิกาที่คลาดไปมากในครั้งเดียว ให้ใช้ chronyc makestep

sudo chronyc makestep

makestep จะทิ้งส่วนต่างที่เหลือซึ่งกำลังค่อย ๆ ปรับอยู่ แล้วให้นาฬิการะบบกระโดดไปตามส่วนต่างนั้นทันที เอกสารทางการเตือนว่าเวลาที่เปลี่ยนกะทันหันอาจกระทบซอฟต์แวร์บางตัว จึงควรใช้เฉพาะเมื่อนาฬิกาคลาดมากจนค่อย ๆ ปรับได้ยาก

🔢 FAQ & เนื้อหาแนะนำ

บริการ NTP อย่าง chrony และ ntpsec คอยปรับนาฬิกาให้ตรงอยู่ตลอด จึงแทบไม่ต้องรัน rdate ผ่าน cron อีก บนเซิร์ฟเวอร์ AlmaLinux 9 ที่ตรวจสอบไม่มี rdate ติดตั้งอยู่ และไม่มีในรายการแพ็กเกจที่ติดตั้งได้ด้วย ส่วนคลังแพ็กเกจของเซิร์ฟเวอร์ Debian 12 มีแพ็กเกจ rdate 1.11 แต่ไม่ได้ติดตั้งไว้

timesync-status เป็นคำสั่งเฉพาะของ systemd-timesyncd บนเซิร์ฟเวอร์ AlmaLinux 9 ที่ใช้ chrony และเซิร์ฟเวอร์ Debian 12 ที่ใช้ ntpsec จึงจบลงด้วยข้อผิดพลาด Failed to query server ทั้งคู่ บนเซิร์ฟเวอร์แบบนี้ให้ตรวจสถานะการซิงค์ด้วย chronyc tracking หรือ ntpq -p

คู่มือทางการอธิบายว่าการตั้งนาฬิกาฮาร์ดแวร์เป็นเวลาท้องถิ่นอาจทำให้เกิดปัญหาเมื่อเปลี่ยนโซนเวลาหรือเมื่อเวลาออมแสงเปลี่ยน จึงแนะนำให้ตั้งเป็น UTC ถ้าเป็นไปได้ และคำสั่งเปลี่ยนเป็น UTC คือ sudo timedatectl set-local-rtc 0 เซิร์ฟเวอร์ทั้งสองเครื่องที่ตรวจสอบเป็น no (UTC)

🔗 เนื้อหาแนะนำ
งานตามกำหนดเวลา Linux: ตั้งค่า crontab วิธีตั้งค่า crontab เพื่อรันงานอย่างการสำรองข้อมูลหรือการล้างล็อกตามเวลาที่กำหนดโดยอิงเวลาของเซิร์ฟเวอร์ อ่านบทความ → Linux ในโทรศัพท์มือถือ

ℹ️ ประกาศเรื่องลิงก์แอฟฟิลิเอต
เนื้อหาของเว็บไซต์นี้มีลิงก์แอฟฟิลิเอต หากผู้เข้าชมซื้อสินค้าหรือบริการผ่านลิงก์เหล่านี้ เว็บไซต์นี้จะได้รับค่าคอมมิชชันจากผู้ขาย ในกระบวนการนี้ ราคาที่ผู้ซื้อจ่าย(ราคาจะลดลงเมื่อมีโปรโมชัน↓)จะไม่สูงขึ้นแต่อย่างใด ราคา ส่วนลด และข้อมูลสต็อกที่แสดงเป็นข้อมูล ณ เวลาที่เขียนและอาจต่างจากความเป็นจริง โปรดตรวจสอบกับผู้ขายอีกครั้งก่อนซื้อ การเลือกและการประเมินสินค้าเขียนตามเกณฑ์ของเราเอง และการได้รับค่าคอมมิชชันหรือไม่ไม่มีผลต่อลำดับการแนะนำหรือเนื้อหาการประเมิน

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

Prove your humanity: 8   +   6   =