timedatectl: kiểm tra đồng bộ thời gian máy chủ Linux và đặt múi giờ

Môi trường thử nghiệmHọ RHELAlmaLinux 9.8systemd 252 · chrony 4.8Tài khoản rootDebian 12 tài khoản thườngKiểm tra ngày 2026-10-29
Lệnh thông tin · thiết lập hệ thốngtimedatectlVị trí/usr/bin/timedatectl

timedatectl là lệnh của systemd dùng để xem và thay đổi đồng hồ hệ thống, múi giờ và trạng thái đồng bộ thời gian NTP của máy chủ Linux. Khi kiểm tra trạng thái đồng bộ trên máy chủ AlmaLinux 9 dùng chrony và máy chủ Debian 12 dùng ntpsec, đồng hồ của cả hai máy chủ đều đã đúng, nhưng dòng NTP service hiện active ở một máy và n/a ở máy còn lại.

Các kết quả dưới đây là kết quả chạy lệnh trên hai máy chủ. Chỉ tên máy chủ, địa chỉ IP và số phiên bản gói được thay bằng giá trị ví dụ, và các lệnh thay đổi giờ hoặc múi giờ không được chạy trên máy chủ đang vận hành.

1️⃣ Cách dùng timedatectl và kiểm tra giờ máy chủ Linux

Chạy timedatectl không kèm tùy chọn cho kết quả giống như khi thêm status. Giờ của đồng hồ hệ thống và đồng hồ phần cứng (RTC), múi giờ và trạng thái đồng bộ được gom trên một màn hình. Dưới đây là kết quả trên máy chủ 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

Múi giờ của máy chủ Debian 12 là Etc/UTC nên Local time và Universal time hiện cùng một giờ. Ý nghĩa từng dòng và kết quả của hai máy chủ có trong bảng dưới đây.

Dòng kết quảNội dung kiểm traKết quả của hai máy chủ và điểm cần kiểm tra
Local timeGiờ hiện tại của đồng hồ hệ thống theo múi giờ đã đặtKhi đổi múi giờ, chỉ dòng này và kết quả của date chuyển sang múi giờ mới
Universal timeCùng thời điểm đó biểu thị theo UTCKhông đổi khi đổi múi giờ – trên máy chủ Debian 12 (Etc/UTC) trùng với Local time
RTC timeGiờ của đồng hồ phần cứng (RTC)Hiện không kèm múi giờ – là giờ UTC nếu RTC in local TZ là no
Time zoneMúi giờ đã đặt, tên viết tắt và chênh lệch so với UTCKhi đổi, dùng tên có trong danh sách của list-timezones
System clock synchronizedKernel có coi đồng hồ là đã đồng bộ hay khôngCả hai máy chủ đều là yes – nếu là no, hãy kiểm tra máy chủ tham chiếu trước bằng chronyc tracking hoặc ntpq -p
NTP serviceDịch vụ đồng bộ mà timedatectl bật tắt có đang chạy hay khôngAlmaLinux 9 (chrony) là active, Debian 12 (ntpsec) là n/a – n/a nghĩa là timedatectl không biết dịch vụ đó, nên kiểm tra bằng systemctl
RTC in local TZĐồng hồ phần cứng có giữ theo giờ địa phương hay không (no = UTC)Cả hai máy chủ đều là no – lệnh đổi yes sang UTC là set-local-rtc 0

Linux có hai đồng hồ. Đồng hồ hệ thống do kernel duy trì sau khi khởi động, còn đồng hồ phần cứng là đồng hồ trên bo mạch chủ, vẫn giữ giờ ngay cả khi máy chủ tắt nguồn.

Đồng hồ phần cứng được đọc trực tiếp bằng hwclock. hwclock in ra giờ đã đổi sang múi giờ hiện tại. Trên máy chủ AlmaLinux, khi đọc với TZ=UTC đặt trước lệnh, kết quả là giờ UTC có đuôi +00:00.

TZ=UTC hwclock --show
2026-10-28 19:53:33.006788+00:00

Trên máy chủ Debian 12 đăng nhập bằng tài khoản thường, cùng lệnh đó kết thúc mà không truy cập được đồng hồ phần cứng.

/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.

Dòng RTC in local TZ là cùng một thiết lập với dòng thứ ba của tệp /etc/adjtime. Trên máy chủ AlmaLinux, dòng thứ ba là UTC, nghĩa là đồng hồ phần cứng được giữ theo UTC.

cat /etc/adjtime
0.0 0 0.0
0
UTC

Khi đọc giá trị trong script, hãy dùng show thay cho status. Trên máy chủ Debian 12, cùng thông tin đó hiện theo dạng tên=giá trị, mỗi dòng một mục.

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

Chọn thuộc tính bằng -p rồi thêm --value thì chỉ còn giá trị, không có tên. Dùng dạng này khi chỉ cần lấy tên múi giờ.

timedatectl show -p Timezone --value
Etc/UTC

🔲 Trình mô phỏng lệnh timedatectl

Trong trình mô phỏng dưới đây, bạn có thể tự gõ các lệnh xem giờ, liệt kê múi giờ, đổi múi giờ và kiểm tra đồng bộ bằng chronyc.

Trình mô phỏng lệnh timedatectlsystemd 252 · chrony 4.8
[root@server work]#
Chỉ chạy trong trình duyệt. Múi giờ đã đổi sẽ trở về ban đầu (Etc/UTC) khi tải lại trang, và ↑↓ gọi lại các lệnh đã gõ trước đó.

2️⃣ Trạng thái đồng bộ thời gian máy chủ Linux

Dòng System clock synchronized cho biết kernel có coi đồng hồ là đã đồng bộ hay không, còn dòng NTP service cho biết dịch vụ đồng bộ mà timedatectl có thể bật tắt có đang chạy hay không. Với show, các giá trị đó hiện thành NTPSynchronized và NTP, còn CanNTP cho biết có dịch vụ đồng bộ nào bật tắt được hay không.

Trên máy chủ AlmaLinux 9 dùng chrony, cả ba giá trị đều là yes.

timedatectl show -p CanNTP -p NTP -p NTPSynchronized
CanNTP=yes
NTP=yes
NTPSynchronized=yes

Trên máy chủ Debian 12 chỉnh giờ bằng ntpsec, chỉ NTPSynchronized là yes, còn CanNTP và NTP là no. Vì vậy dòng NTP service trên màn hình status của máy chủ này hiện n/a.

timedatectl show -p CanNTP -p NTP -p NTPSynchronized
CanNTP=no
NTP=no
NTPSynchronized=yes

Bản thân dịch vụ ntpsec vẫn đang chạy.

systemctl is-active ntpsec
active

Các dịch vụ đồng bộ mà timedatectl biết chỉ là những dịch vụ ghi trong tệp danh sách ở thư mục ntp-units.d, và gói của bản phân phối đặt các tệp này vào /usr/lib/systemd/ntp-units.d/ (theo tài liệu hướng dẫn chính thức). Máy chủ AlmaLinux 9 có tệp danh sách do gói chrony cài đặt, bên trong chỉ có một dòng 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

Máy chủ Debian 12 không có thư mục này. Vì ntpsec không có trong danh sách, timedatectl biết đồng hồ đã đồng bộ nhưng không thể bật hay tắt dịch vụ đó.

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/*.listDanh sách dịch vụ đồng bộ mà timedatectl bật tắt
chronyd.serviceCó trong danh sách → NTP service: active
ntpsec.serviceKhông có trong danh sách → NTP service: n/a

3️⃣ Kiểm tra đồng bộ thời gian bằng chronyc

Trên máy chủ dùng chrony, đồng hồ đang theo máy chủ thời gian nào được kiểm tra bằng chronyc. sources in ra các máy chủ thời gian mà chronyd đang hỏi cùng trạng thái của chúng, mỗi dòng một máy.

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

Dấu ^ ở đầu là máy chủ thời gian, * ở ký tự thứ hai là máy chủ tham chiếu mà đồng hồ đang theo, còn - là máy chủ ứng viên không được tính vào phép tính. Poll 4 của máy chủ tham chiếu nghĩa là hỏi mỗi 16 giây (2 mũ 4), còn Reach 377 là giá trị cho biết đã nhận đủ cả tám phản hồi gần nhất.

tracking in ra đồng hồ hệ thống lệch bao nhiêu so với giờ của máy chủ tham chiếu.

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

Dòng System time cho thấy đồng hồ hệ thống chậm hơn giờ NTP 0.000002422 giây, và Leap status là Normal. Update interval 16.3 giây là khoảng cách giữa hai lần cập nhật đồng hồ gần nhất.

Máy chủ nào được hỏi là do các dòng pool và server trong /etc/chrony.conf quyết định. Bỏ chú thích và dòng trống, chỉ giữ các dòng thiết lập thì còn như sau.

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

Dòng pool hỏi nhóm NTP của AlmaLinux, còn prefer ở dòng server cuối là tùy chọn khiến chronyd chọn máy chủ này trước các máy khác. makestep 1.0 3 là thiết lập mà trong ba lần cập nhật đầu tiên sau khi chronyd khởi động sẽ chỉnh ngay một lần đồng hồ lệch quá 1 giây, sau đó chỉnh dần bằng cách cho đồng hồ chạy nhanh hơn hoặc chậm hơn một chút. rtcsync khiến kernel chép giờ hệ thống sang đồng hồ phần cứng mỗi 11 phút (theo tài liệu chính thức).

Trên máy chủ Debian 12 dùng ntpsec, cùng thông tin đó được kiểm tra bằng ntpq -p. Dấu * ở đầu là máy chủ tham chiếu, và cả ba máy chủ đều được hỏi mỗi 1024 giây.

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️⃣ Đổi múi giờ bằng timedatectl

Tên múi giờ được xem bằng list-timezones. Phần lớn có dạng Châu lục/Thành phố, mỗi dòng một tên, và cả hai máy chủ đều có 598 tên.

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

Danh sách dài nên khi tìm tên hãy lọc bằng grep.

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

Múi giờ được đổi bằng cách ghi tên trong danh sách sau set-timezone. Lệnh này thay liên kết /etc/localtime bằng tệp múi giờ mới, nên với tài khoản thường hãy chạy kèm sudo.

sudo timedatectl set-timezone America/New_York

Kiểm tra bằng ls -l xem /etc/localtime có phải là liên kết tới tệp múi giờ hay không.

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

Tên không có trong danh sách bị từ chối ngay trước khi múi giờ được đổi.

timedatectl set-timezone Mars/Olympus
Failed to set time zone: Invalid or not installed time zone 'Mars/Olympus'

Đổi múi giờ không làm thay đổi giờ của đồng hồ hệ thống; chỉ Local time và kết quả của lệnh date hiện theo múi giờ mới. Trên máy chủ giữ đồng hồ phần cứng theo UTC, đồng hồ phần cứng cũng không đổi (theo tài liệu hướng dẫn chính thức).

5️⃣ Bật NTP và đặt giờ thủ công bằng timedatectl

set-ntp true khởi động dịch vụ đầu tiên trong danh sách dịch vụ đồng bộ và cho nó chạy khi khởi động máy. false dừng các dịch vụ trong danh sách và không cho chúng chạy khi khởi động máy (theo tài liệu hướng dẫn chính thức).

sudo timedatectl set-ntp true

Trên máy chủ Debian 12 không có tệp danh sách, ngay cả khi nhập false, đúng bằng giá trị hiện tại, lệnh vẫn kết thúc với NTP not supported. Dịch vụ không có trong danh sách như ntpsec được bật tắt trực tiếp bằng systemctl.

timedatectl set-ntp false
Failed to set ntp: NTP not supported

Khi tự đặt giờ, hãy ghi ngày và giờ sau set-time. Lệnh này chỉnh cả đồng hồ phần cứng cùng với đồng hồ hệ thống.

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

Trên máy chủ Debian 12, nhập giá trị sai định dạng thì lệnh kết thúc với lỗi mà không đổi giờ.

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

Trên máy chủ dùng chrony, khi cần chỉnh một lần đồng hồ lệch nhiều, hãy dùng chronyc makestep.

sudo chronyc makestep

makestep bỏ phần chênh lệch còn lại đang được chỉnh dần và cho đồng hồ hệ thống nhảy ngay theo đúng khoảng chênh lệch đó. Tài liệu chính thức cảnh báo việc giờ thay đổi đột ngột có thể ảnh hưởng tới một số phần mềm, nên chỉ dùng khi đồng hồ lệch quá nhiều để chỉnh từ từ.

🔢 FAQ & nội dung đề xuất

Các dịch vụ NTP như chrony và ntpsec liên tục giữ đồng hồ đúng giờ, nên hầu như không cần chạy rdate bằng cron nữa. Trên máy chủ AlmaLinux 9 đã kiểm tra, rdate chưa được cài và cũng không có trong danh sách gói có thể cài. Kho gói của máy chủ Debian 12 có gói rdate 1.11 nhưng chưa được cài.

timesync-status là lệnh chỉ dành cho systemd-timesyncd. Trên máy chủ AlmaLinux 9 dùng chrony và máy chủ Debian 12 dùng ntpsec, cả hai đều kết thúc với lỗi Failed to query server. Trên những máy chủ này, hãy kiểm tra trạng thái đồng bộ bằng chronyc tracking hoặc ntpq -p.

Tài liệu hướng dẫn chính thức giải thích rằng để đồng hồ phần cứng theo giờ địa phương có thể gây lỗi khi đổi múi giờ hoặc khi chuyển giờ mùa hè. Vì vậy khuyên nên để theo UTC nếu có thể, và lệnh đổi sang UTC là sudo timedatectl set-local-rtc 0. Cả hai máy chủ đã kiểm tra đều là no (UTC).

ℹ️ Thông báo tiếp thị liên kết
Nội dung trên trang này có chứa liên kết affiliate (tiếp thị liên kết). Khi khách truy cập mua sản phẩm hoặc dịch vụ qua các liên kết này, trang sẽ nhận hoa hồng từ bên bán. Trong quá trình đó, số tiền người mua phải trả (sẽ giảm khi có chương trình khuyến mãi ↓) không hề tăng lên. Giá, khuyến mãi và tình trạng hàng được đăng theo thời điểm viết bài và có thể khác với thực tế, vì vậy hãy kiểm tra lại lần cuối với bên bán trước khi mua. Việc chọn và đánh giá sản phẩm dựa trên tiêu chí riêng của trang; việc có nhận hoa hồng hay không không ảnh hưởng đến thứ tự giới thiệu hay nội dung đánh giá.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Prove your humanity: 6   +   1   =